美文网首页
微服务最难的部分是你的数据

微服务最难的部分是你的数据

作者: 新强吖 | 来源:发表于2016-07-28 10:49 被阅读218次

该文认为实现微服务最难的部分是业务数据,对于复杂业务的微服务系统必须结合领域驱动设计、事件驱动和EventSourcing等。微服务中数据状态一般是放在数据库中,微服务是根据分离关注然后封装的设计原理,因此,每个微服务应该拥有和控制自己的数据库,并没有两个微服务共享一个数据库。不共享一个数据库,你就没有竞争读写模式,数据锁模型冲突与协调等问题,一个微服务一个单独数据库确实提供我们安全与便利。对于一个企业建立微服务,需要考虑以下几种情况:1.你的业务领域是什么?2.事务边界在哪里?3.微服务之间如何跨边界通讯?4.数据库共享?互联网公司的微服务实践和传统企业实现微服务巨大差别也许就在这里,传统企业的业务领域会比互联网公司的业务复杂得多。应对这样复杂领域,DDD能够帮助我们划分上下文边界,什么是微服务?就是一个上下文边界,什么是上下文边界?就是一个微服务。所谓事务边界,是一种代表业务不变量的最小原子单位,无论你使用数据库ACID或两段事务实现,这些都不重要,重要的是我们要使得事务边界越来越小,比如一个事务在一个聚合对象中。这样我们才能扩展,当我们使用领域模型 实体值对象和聚合根这些概念时,实际上,存在一个有界上下文边界内(前提条件),一个包含实体和值对象的聚合就是代表了业务不变量的最小原子单位。而这种原子事务是不应该跨越有界上下文的。也就是说,我们将原子事务限定在了一个微服务之内。那么微服务之间如何通讯?微服务之间通讯实际是跨越有界上下文,为什么会有跨越这种事情发生?因为我们需要维持多个聚合体之间的数据一致性,也就是说,一个复杂业务流程是可能跨多个有界上下文,通过多个聚合体操作才能实现。这里就涉及到了分布式系统问题,CAP理论是我们的理论指导武器,我们跨多个聚合体操作,实际是保证多个聚合体内部的状态保持一致,如同数据库中操作多个关联表,数据库ACID会保证多个关联表的数据一致性,因为微服务(内含聚合体)是分布部署的,因此,我们需要一种机制也能保证数据一致性,这就是通过事件的最终一致性实现。事件是一个不变数据,能够及时截获当时业务操作动作,然后广播给其他微服务,其他微服务会接受这个广播事件,更新自己的聚合内内部状态。这种EventSourcing和CQRS的好处是:1.你可以将你的数据库看成是记录的当前状态,而不是真正记录。2.你能引入新的应用后,重新读取过去事件,检查这个应用行为是否与预期一致?可测试或发现隐藏很深的Bug.3.可以实现完美的审计日志,任何业务操作都会被记录,容易追溯,对于银行 保险等行业极其重要,否则发生金额错误以后,很难追踪重现当时现场。当然,缺点是带来复杂性,但是因为业务复杂,必然需要用复杂的解决方案解决复杂问题。在微服务实战中,虽然大型解决方案商帮助我们解决了中间件或SOA的基础设施产品,但是剩余最难的部分还是需要我们自己面对解决。
转载地址:

相关文章

  • 微服务最难的部分是你的数据

    该文认为实现微服务最难的部分是业务数据,对于复杂业务的微服务系统必须结合领域驱动设计、事件驱动和EventSour...

  • 最难的部分

    最难的部分是摈弃幻觉,面对现实。抗拒想要逃避和沉沦的下坠感。 吸毒终究带来的只是幻觉,除了迷惑我大脑认知之外,毫无...

  • Jmeter进行接口自动化测试实战-学习分享-0.0.3

    进行接口测试最难的部分不就是去比对你需要比对的数据吗?因为你永远不知道,面对你的数据是长什么样的。 一、简单的单行...

  • 微笑的表情!

    世上最难求的是爱情,最难还的是人情,最难得的是友情,最难分的是亲情,最难找的是真情,最难受的是无情,最可爱的是你微...

  • 道歉—最难的部分

    不是说句“对不起”就能解决问题疗愈伤痕,反而有可能让关系更僵化! 抱歉首先要了解的两个问题: 1、共感(情):对对...

  • 写作最难的部分

    写作最难的部分不是文章本身有多精彩、有多精妙,是不是10万+而是自己不敢写。 因为害怕自己写不好,写出来的文章没人...

  • 从零开始学彩铅26

    甜蜜清新的草莓裹上浓郁微苦的巧克力...草莓的质感是最难表现的部分

  • 人生最难的部分是做选择

    众所周知,人的一生有很多难关,生老病死都是苦痛。唐僧师徒赴西天取经,经历九九八十一难,也正是对人生难处的隐喻。 这...

  • 能让你精进的,都是最难的部分

    01. 最近买来了雅思的真题集,想督促自己继续学习英语。我一贯的认知就是如果想系统地去学习和提高某种知识或技能,最...

  • 微服务数据交互及数据一致性

    如果你已经搭建了几个微服务,你可能会同意最困难的部分是数据:微服务不是孤立存在的,而且他们往往需要在彼此之间会进行...

网友评论

      本文标题:微服务最难的部分是你的数据

      本文链接:https://www.haomeiwen.com/subject/zmrajttx.html