天天看点

微服务不是银弹

中心思想:

如果分布式数据库可以做到ACID,那么就不会有微服务了。谁也不愿意去研究微服务。

所有的东西像硬币一样都具有两面性。(莫比乌斯环除外)

看技术也是一样的,首先要知道这个技术为什么要出现,解决了什么问题。然后就是他带来了什么问题,你需要知道怎么去处理这些问题。

  • 新技术
    • 好处是什么
    • 带来的什么麻烦
      • 能解决的麻烦,需要找到适合你的解决方案
      • 不能解决麻烦,你能不能承受这些问题。

第一代:单体服务

  • 好处:简单
  • 坏处:不能拓展

第二代:复杂均衡

  • 好处:应用服务可以横向扩展
  • 坏处:需要解决session同步
    • 引出的技术
      • session共享
      • redis 
  • 还有的问题,就是数据库是单体的,数据库的压力不能释放

第三代:读写分离

  • 好处:把数据库的压力释放了一部分。
  • 坏处:增加的编码的难度,需要使用不同的数据源处理
  • 还有什么问题:
    • 读写分离会造成读取数据的延时,
    • 多服务器的时候造成出现问题概率的变大

第四代:横向分表(把一张表的数据,拆分成多个库的表,例如:历史记录可以按月拆分,或者按照hash值拆分)

  • 好处:可以消除单个数据库的限制。增加了并行计算的效率。
  • 坏处:统计数据时,需要增加中间层去做数据合并。

第五代:纵向拆分(微服务时代)

  • 好处:可以处理大量的数据。
  • 坏处:就是原来用数据库处理的事务,需要各个应用自己处理,还需要做事务补偿。大大增加了编码的复杂程度。
    • 分布式事务
    • 服务的熔断、降级
    • 事务补偿
    • 服务治理。。。。

上面是我理解的服务的演进过程,我认为还是需要根据优缺点取舍设计方案,而不是要去用什么技术。

继续阅读