
微服务
文章平均质量分 92
Thoughtworks思特沃克中国
这个作者很懒,什么都没留下…
展开
-
被误解的Event Sourcing
当我们决定使用Event Sourcing作为架构选择之时,通常我们也会选择DDD去构建得到领域事件。DDD里提到的Event指的是对系统状态产生改变的现实事件,同样我们在Event Sourcing的系统中存储的也是会导致系统状态改变的事件。似乎这两种不同的软件开发思想,对Event的认识有着不谋而合的默契。...原创 2022-09-06 17:30:00 · 882 阅读 · 0 评论 -
使用上下游思维实现系统解耦
本文将从服务间上下游的思维来讨论如何在系统架构演进过程中,持续的保持服务间的松耦合,实现解耦的目标。原创 2022-09-01 17:30:00 · 1999 阅读 · 0 评论 -
为什么微服务要有独立数据库
实施微服务架构,我们一直在遵循一个实践原则:每个微服务要有自己独立的数据库,避免数据库层面的耦合。这种理所当然感觉好像不需要多加思考,就是应该这样做;图片来源:James Lewis和Martin Fowler的文章《Microservices》那么到底为什么每个微服务都需要独立的数据库,数据放在一个数据库有问题吗?要回答这个问题,我们还是要回归到微服务的定义 (参见James Lewis和Martin Fowler的文章《Microservices》,地址:https://martinfowle.原创 2021-10-09 10:55:26 · 252 阅读 · 0 评论 -
微服务架构下的系统集成
微服务架构相比单体架构而言的优点,可以列举出很多:服务个体更小,更内聚,业务职责更清晰,可复用性更强,可以独立部署发布等等;从软件开发的角度,灵活性和效率都会有很大的提升……然而,微服务架构本质上是分布式系统架构,各个服务需要配合协同来完成产品的需求,业务数据的分散使得服务之间需要通过集成来完成协同工作,那么问题来了,集成要采用什么方式?要以什么样的原则进行?如何设计才能尽量保证不同服务之间数据的一致性?混乱的实现微服务架构下推荐使用REST作为服务间同步通信的方式,对于非实时需求,可以基于事件来实现原创 2021-07-19 10:48:00 · 430 阅读 · 0 评论 -
使用 DDD 指导微服务拆分的逻辑
对于服务拆分的逻辑来说,是先设计高内聚低耦合的领域模型,再实现相应的分布式系统。服务的划分有一些基本的方法和原则,通过这些方法能让微服务划分更有操作性。最终在微服务落地实施时也能按图索骥,无论是对遗留系统改造还是全新系统的架构都能游刃有余。开发者在刚开始尝试实现自己的微服务架构时,往往会产生一系列问题 :微服务到底应该怎么划分?一个典型的微服务到底应该有多微?如果做了微服务设计,最后真的会有好处吗?回答上面的问题需要首先了解微服务设计的逻辑,科学的架构设计应该通过一些输入并逐步.原创 2020-12-15 18:06:08 · 1023 阅读 · 0 评论 -
为复杂混沌的微服务生产环境设计韧性系统
太长不读版即使每一个微服务都在测试部门的QA环境上通过了测试,当将其一个个部署到生产环境后,也必然会发生故障。不能以通过测试部门的QA测试为目标,而应该为生产环境的韧性而设计。当使用鱼骨根因分析法、因果回路图或者麦肯锡MECE分析法进行分析时,要小心不要用错场景,掉进复杂混沌世界的深渊。面对复杂混沌的生产环境,应该本着“不信有好事”的原则来进行“明哲保身”式的软件设计,并在生产环境中利用...原创 2019-09-12 15:41:51 · 434 阅读 · 0 评论 -
微服务分布式一致性模式
微服务拆分后遇到的一个麻烦是分布后的一致性问题。单体架构的业务处理和数据都在一个进程里面,一致性保障很成熟,开发人员基本上不用关心。当把业务系统拆分到不同进程时,就遇到了技术性一致性问题。这带来了纠结,我们希望有一颗银弹,一把解决问题。但由于分布式一致性在(CAP)理论上没有完美的解决方案,我们所能选择的方案是在特定业务场景下的选择。我们这里讨论的分布是指业务逻辑上做了拆分导致的分布,而不是数据...原创 2019-09-04 11:20:12 · 294 阅读 · 0 评论 -
从单体到微服务,这些年架构的演变
背景这两年业界最流行的技术架构话题已经从前后端分离,变成了分布式、微服务、DDD了。微服务架构适合所有的公司吗,业务场景演变到了什么地步才需要考虑上微服务呢?毕竟选择技术架构之前应该考虑业务是否与之匹配,否则分布式、微服务这类繁重的架构设计对一些公司来说就变成了屠龙之技,反而成为一线开发团队的负担。在我不长的职业生涯中,经历过小型创业公司、国企般的大型项目以及在ThoughtWorks见到的各...原创 2019-08-02 10:24:22 · 1104 阅读 · 0 评论 -
溯源微服务:企业分布式应用的一次回顾
本文是对企业分布式应用的一次回顾,与前微服务时代相比,我们究竟在哪些领域吸取了教训,哪些方面持续搞砸。原创 2019-05-08 10:39:05 · 283 阅读 · 0 评论 -
微服务架构下的质量迷思——混沌工程
微服务概念的提出至今已多年,这期间也是互联网及互联网+发展的高速期,消费市场变化莫测,消费者也变得越来越挑剔,越来越多的互联网巨头甚至传统行业都开始对自己的遗留系统进行微服务改造。原创 2019-05-05 10:08:03 · 485 阅读 · 0 评论 -
为什么微服务从未被技术雷达“采纳”?
如今,微服务在许多组织中发挥着重要作用。自从James Lewis和Martin Fowler发表了那篇开创性的文章后,微服务也随之声名鹊起。此后,Sam Newman也撰写了相关著作并举办了许多讲座,ThoughtWorks、Netflix和Google的人,还有许多其他组织和个人也纷纷发表文章,进一步推动了微服务的发展势头。微服务很快就进入了ThoughtWorks技术雷达的Trial(试验)...原创 2019-01-17 14:33:24 · 327 阅读 · 0 评论 -
微服务测试的思考与实践
最近几年,微服务架构越来越火爆,逐渐被企业所采用。随着软件架构的变化,对应的软件测试策略需要作何调整呢?本文将介绍微服务架构下的测试策略,并结合分享在业务和架构演变过程中,一个历经九年的项目测试策略的演进。关于微服务微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的进程中,服务间采用轻量级通信机制互相沟通(通常是基于HTTP协议的RESTful API)。...原创 2018-11-14 11:20:44 · 285 阅读 · 0 评论 -
讨论微服务之前,你知道微服务的 4 个定义吗?
关于“什么是微服务”的问题,其实并没有一个统一的认识。这些年在不同的场合里和不同背景的朋友都在探讨微服务。但聊得越多,越发现大家聊的不是同一回事。和 DevOps 一样,“微服务”也是一个内涵十分广泛的词。本文从“Microservice“这个概念的源头出发,总结了 4 个常用的微服务定义。James Lewis 原始版的微服务 6 大特征这个版本起源于2012年,这里首先要注意年份,那时候还...原创 2018-10-24 11:55:06 · 248 阅读 · 0 评论 -
识别领域事件
随着微服务架构的兴起,微服务设计与拆分的的最佳实践DDD已然成为大家讨论与实践的热点,整个行业都在探索如何用DDD建模来实现微服务设计。事件风暴作为最接地气的实践,在不同的项目中野蛮生长,不断演进,今天已经渐渐成熟。作为事件风暴的灵魂——领域事件,值得我们投入更多的精力去设计与打磨。领域事件是用特定方式(已发生的时态)表达发生在问题域中的重要事情,是领域通用语言(UL)的一部分。为了方便理解这...原创 2018-09-05 11:43:59 · 1075 阅读 · 1 评论 -
当Subdomain遇见Bounded Context
《实现领域驱动设计》的作者Vernon根据过去几年DDD的实战经验又写了一本《领域驱动设计精粹》,日前已经在中国翻译出版。去年底出版社找到我时,读完英文原著最终还是放弃了翻译,推荐给了其他同事,并告诉他们出版后准备接受炮火洗礼。不得不承认Vernon的新书在构建DDD落地体系方面较之上一本有了很大的进步,全书读起来很连贯,有一定实践基础的团队或个人均可直接上手书中很多的实践。并且通过一个案...原创 2018-07-18 18:13:29 · 874 阅读 · 0 评论 -
Serverless的微服务持续交付案例
本文是GitChat《Serverless 微服务的持续交付》部分内容已做修改。文章聊天实录请见:“顾宇:Serverless 微服务的持续交付解析”“Serverless 风格微服务的持续交付(上):架构案例”中,我们介绍了一个无服务器风格的微服务的架构案例。这个案例中混合了各种风格的微服务。架构图如下:在这个架构中,我们采用了前后端分离的技术。我们把 HTML,JS, ...原创 2018-07-04 11:59:55 · 533 阅读 · 1 评论