架构设计的一些实践概括(持续完备中)
架构设计大概要考虑的点:
1,分布式选型
2,中间件选型
3,接受返回参数封装
4,同步异步设计(队列,redis使用)
5,swagger集成
6,日志切面--kafka
7,降级处理,定时任务(分布式锁)
8,session的共享无状态
8,gateway的设计思想
9,http等工具类
10,跨域处理
11,枚举类型
12,反射调用(结合数据表的不同渠道不同业务类的配置)---重复性质的类似业务
13,nginx代理
14,分布式事物的处理
15,是否有必要 api<->gateway->service->api(和外部交互的统一经过api转发)
16,在设计架构的时候尽量设计交互系统间数据流转的设计---之一:系统在运行后期80%左右的问题都在系统间数据流转,同步(数据库共享)---分布式系统在设计的时候,处理特殊的数据流转设计,数据库共享是保证数据问题少的基础
之二:分布式系统数据流设计(数据关联系统):
数据库之间高内聚低耦合(一个库一个业务系统)
库之间用一个关联业务字段
库之间不能有标志,状态的耦合----即库之间不需要同步数据(不能A系统库有B系统库的状态,否则A,B哪一方修改状态都需要同步),只需要做到业务一致性即可
17,表设计的时候表之间最好用统一的关联字段,这样有利于后续数据逻辑(适当冗余一些字段减少关联查询)(用自动生成的订单,或id--外部无法更改的作为关联字段,就不会因为外部的修改二影响其他)
2,操作日志表(方便生成报表)
18,系统重构几种方式
1,框架重构---修改框架
2,分层重构---一般是dao,service,(bo可以通过dozer工具转化)--合并数据库
3,业务重构---一般适用于局部业务的改造
19,灰度发布
20,特殊要求的应用场景,可以联合多个工具中间件完成(没有现成的话),或者多加结合使用的标记key、变量
---比如syschnoized指定唤醒,或mq的顺序消费可以用此思路