work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

微服务如何拆分

Posted on 2018-11-15 16:42  work hard work smart  阅读(498)  评论(0编辑  收藏  举报

一、微服务如何拆分

1、先明白起点和终点

2、需要考虑的因素和坚持的原则

 

二、起点和终点

1、起点

     既有架构的形态

2、终点

  好的架构不是设计出来的,而是进化而来的。

  一直在演进

 

三、不适合上微服务的

1、系统中包含很多很多强事务场景的

2、业务相对稳定,迭代周期长

3、访问压力不大,可用性要求不高

 

四、如何拆功能

1、单一职责,松耦合,高内聚

2、关注点分离

  按职责

  按通用性

  按粒度级别

 

六、服务拆分方法

服务和数据的关系

  先考虑业务功能,再考虑数据

       无状态服务(一个数据被多个服务共享)

 

七、如何拆分“数据”

1、每个微服务都有单独的数据存储

2、依据服务特点选择不同结构的数据库类型

  依据服务的功能特点,选择合适的数据库。

     1)有些前置服务使用node开发,主要是展示类型的数据,对事务要求不高。那这个服务可以考虑NoSql的MongoDB

     2)比如服务是做搜索类型的,我们可以优先考虑elasticsearch。

      3) 对事务要求高的,优先考虑支持事务的关系型数据库,如MySql

3、难点在确定边界。

4、针对边界设计API

5、依据边界权衡数据冗余