文档章节

改造工程步骤

猿神出窍
 猿神出窍
发布于 07/17 15:08
字数 878
阅读 0
收藏 0

 背景: 对于存在有问题的项目(包括 代码不规范 数据库表命名不规范 )需要改造

系统业务架构:

步骤: 

     1 新建工程 : 将需要改造的项目拷贝一份 修改项目名称

     2 将相应的表结构拷贝到新的数据库中 修改不直观的表名 字段的备注等

     3 修改对应的代码 和数据库表字段对应 熟悉接口对应的相关类 找到与之相关的

 

注意:

   1 并发幂等性(重试引起)控制

   2 方法设置开关

   3 金额存整数(元化为分)

   4 解耦 (rocketMQ消息异步解耦)

     加入状态机【待完成】

  5 分库【垂直拆分 基本的思路就是按照业务模块来划分出不同的数据库】

    分表【垂直拆分某个表中的字段比较多,可以新建立一张“扩展表”,将不经常使用或者长度较大的字段拆分出去放到“扩展表”中】

    好处: 便于 管理、维护、监控、扩展 ,在高并发场景下,垂直分库一定程度上能够突破IO、连接数及单机硬件资源的瓶颈,是大型分布式系统中优化数据库架构的重要手段。

   注意:需要改写以前的查询语句【跨库join,分布式事务等】

   跨库Join的几种解决思路

 1 全局表【很少发生编号 像数据字典】
   系统中所有模块都可能会依赖到的一些表,将这类表在其他每个数据库中均保存一份

 2 字段冗余 【最复杂的还是数据一致性问题,这点很难保证】

 3 数据同步 
   定时A库中的tab_a表和B库中tbl_b有关联,可以定时将指定的表做同步,通过ETL工具来实施

 4 系统层组装
   在系统层面,通过调用不同模块的组件或者服务,获取到数据并进行字段拼装
   注意:把循环调用改成一次调用【通常我们都会通过缓存来避免频繁RPC通信和数据库查询的开销】

   join 查询带条件过滤的情况
     查询出state字段符合/不符合的UserId,在查询问答数据的时候使用in/not in进行过滤,排序,分页等。过滤出有效的问答
     数据后,再调用用户服务获取数据进行组装

   6 考虑问题转换思路 : 记得两方面着手 1 数据库层面【善于利用伪列】  2 代码层面

   水平分表,能够降低单表的数据量,一定程度上可以缓解查询性能瓶颈。但本质上这些表还保存在同一个库中,所以库级别还是会有IO瓶颈。  所以,一般不建议采用这种做法

忽略配置文件被跟踪的另一种方法:

$ git update-index --assume-unchanged /path/to/file       #忽略跟踪

$ git update-index --no-assume-unchanged /path/to/file  #恢复跟踪

模型: 领域模型  仓储模型  

 

eclipse里groovy 插件地址:http://dist.springsource.org/release/GRECLIPSE/e4.7

© 著作权归作者所有

共有 人打赏支持
猿神出窍
粉丝 16
博文 173
码字总数 60983
作品 0
沙坪坝
项目经理
用分布式事务中间件来保障金融级交易系统的一致性

背景介绍 本篇是北京云栖大会Tech Insight Workshop金融云主题《使用SOFA来快速构建金融级分布式交易系统》中的一个组成部分. 通过前面的篇章,我们已经借助SOFA Boot框架构建了基于微服务架...

chiehchu
2017/12/18
0
0
Flutter混合工程改造实践

Flutter混合工程改造实践 作者:闲鱼技术-字平 背景 闲鱼技术团队于2018年上半年率先引入了Flutter技术尝试实现客户端开发的统一,并成功改造和上线了复杂的商品详情业务。这一过程中,由于原...

闲鱼技术
07/09
0
0
Dubbo的分布式系统架构

第01节--使用Dubbo对传统工程进行服务化改造的思路介绍 第02节--使用Dubbo对传统工程进行服务化改造 第03节--ZooKeeper注册中心安装 第04节--使用Dubbo对传统工程进行服务化改造后的服务调用...

做牛作码
2016/03/16
44
0
基于 CoreText 的排版引擎

本章前言 使用 CoreText 技术,我们可以对富文本进行复杂的排版。经过一些简单的扩展,我们还可以实现对于图片,链接的点击效果。CoreText 技术相对于 UIWebView,有着更少的内存占用,以及可...

SunGiantor
2015/07/01
0
0
网络基础改造建设——总结

理论是传授经验,理论最终服务对象还是为了实践。实践总结经验、实践和理论结合才能提高做事效率。实践源于2017-11-21~2017-11-31公司分部网络改造。本次实践源于硬件基础建设:需求方面:需...

2013yang
2017/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nginx模块学习六 add_header 跨域访问

语法 Syntax: add_header name value [always];Default: --Context:http,server,location,if in location 例:/etc/nginx/conf.d/default.conf server {    listen       80; ......

Romanceling
今天
0
0
SpringBoot初探

#SpringBoot初探 三种创建SpringBoot项目的方式: 第一种:使用IDEA创建maven项目,选择maven-archetype-quickstart; 第二种:使用IDEA创建Spring Initializer,选择web组件; 第三种:使用...

向码而生
今天
2
0
IO

JAVA中IO技术:BIO、NIO、AIO 1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方...

DemonsI
今天
0
0
org.apache.commons 常用工具类

一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流、socket、或者selector且不抛出异常。通常放在finally块。 toString 转换IO流、 Uri、 byte[]为String。 copy IO流数据复制,...

sprouting
今天
0
0
linux使用Inotify监控目录或者文件状态变更

基本概念: Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。 需求: 1.有一个文件采集进程,...

mickelfeng
今天
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部