课程名称:SpringCloud Finchley三版本微服务实战
课程章节:
第4章 服务拆分
主讲老师:廖师兄
课程内容:
服务拆分原则,商品服务编码,订单服务编码
课程收获:
1、微服务如何拆分:
(1)、先明白起点和终点
起点:既有的架构形态(老项目、新项目)
终点:好的架构不是设计出来的,而是进化而来的。进化一直在演进
(2)、需要考虑的因素与坚持的原则
2、业务形态不适合微服务拆分的
(1)、系统中包含很多很多强事务场景的
(2)、业务相对稳定,迭代周期长
(3)、访问压力不大,可用性要求不高
3、微服务的特点:
(1)、一系列微小的服务共同组成
(2)、单独部署,跑在自己的进程里
(3)、每个服务为独立的业务开发
(4)、分布式的管理
4、服务拆分
(1).拆分功能,单一职责,高内聚,低耦合;
(2).关注点分离;按职责,按通用性(公共组件拆分);服务的粒度;
(3).先考虑功能再考虑数据;
(4).无状态服务
5、如何拆数据:
(1)、每个服务都有单独的数据存储。
服务之间通过api进行访问通信,服务之间有隔离;
(2)、根据服务特点选择不同的数据库。
类型很丰富,对事物要求不高,可以选mongodb;搜索服务可选elasticsearch;对事务要求高的可以选支持关系型数据库,可选mysql.
(3)、难点在确定边界。
每个服务有自己关系的业务与数据,怎么针对不同的服务来设计api接口;服务拆分后,需要别的服务的数据,需要考虑调用方式,需要考虑冗余数据到自己服务,如何增加聚合度。