1、有序化重构;分/合; 子系统/模块/组件 进行拆分;
2、业务架构/技术架构;
3、抽象思维,定边界;
4、集群模式 ,session共享; 解决方案:① session复制,适合小集群,数据冗余;②sessionn共享 ,统一存储,基于redis;③无状态存储 生成一个标识 ,access_token.存在安全性问题;
5、数据库性能提升;① 读写分类,适合读多写少的场景 ② 分库分表 ,历史库
数据如何同步 mysql master/slave;
数据源如何路由 mycat /sharding-jdbc
6、特性的问题:搜索引擎,lucense、solr、Elasticsearch(商业服务),基于索引构建,来自原始数据(数据库);
7、Nosql存储或者其他存储方式;hbase,mongodb(监控数据),redis(热点数据),浏览器缓存、应用缓存、数据库缓存、CPU缓存; hdfs,fastdfs;
8、分布式数据库;用户库,商品库,交易库;
分布式事务问题:分布式数据一致性问题;
8.1、SOA ESB
8.2、演进到注册
8.3、容器+k8s调度
8.4、serviceMesh ,客户端有个sidecar(解决 服务熔断 服务调用 服务发现 负载均衡)
9、序列化和发序列化
涉及序列化的JAVA类尽量实现serialVersionUID的值,防止后面的开发同事增加这个字段,这样会造成之前序列化存储的结果会和这个类版本不一致;
10、CAP理论
C: 强一致性;A:高可用性;P:分区容错性(由于网络等原因,某个节点即使挂了,对外无感知)
在集群环境中,分区容错,肯定需要满足的;所以意味着 C和A,只能取其一;
Eureka满足AP特效,即使其中一个节点挂了,不影响正常提供服务;Eureka节点间同步是异步,非强一致性;