Uber面向领域的微服务体系架构实践|华体会最新官网,hth华体会体育,hth体育官网
产品简介
我们进一步建立我们称之为层的域荟萃。
产品介绍
本文摘要:我们进一步建立我们称之为层的域荟萃。
我们进一步建立我们称之为层的域荟萃。域所属的层建设了允许该域中的微服务负担的依赖关系。我们称之为层设计。
降低庞大性
随着 Uber 已经生长到约莫 2200 个关键微服务我们亲身体验了这些折衷。
在已往两年里Uber 试图降低微服务的庞大性同时仍然保持微服务架构的优势。通过这篇博文我们希望先容我们对微服务体系结构的通用方法我们称之为“ 面向领域的微服务体系架构”(Domain Oriented microservice ArchitectureDOMA)。
由于这些缺点近年来品评微服务架构变的很盛行但很少有人主张彻底拒绝微服务架构。
系统的运营效益(可维护性)太重要了而且似乎没有或极其有限的替代方案。我们使用 DOMA 的目的是为那些希望在保持与微服务体系结构相关的灵活性的同时降低总体系统庞大性的组织提供一条前进的门路。
最后我们确定每个域对其他域应该是不行知的也就是说一个域不应该在其代码库或数据模型中有与另一个域硬编码相关的逻辑。由于团队经常需要在另一个团队的域中包罗逻辑(例如自界说验证逻辑或数据模型上的一些元上下文)我们提供了一个扩展架构来支持域中界说良好的扩展点。
因此“面向领域的微服务体系架构”大量借鉴了组织代码的既定方法如领域驱动设计、洁净的体系架构、面向服务的体系 架构以及面向工具和接口的设计模式。我们认为 DOMA 是创新的因为它是一种相对新颖的方法可以在大型组织中的大型漫衍式系统中使用既定的设计原则。
我们进一步建立我们称之为层的域荟萃。域所属的层建设了允许该域中的微服务负担的依赖关系。
我们称之为层设计。
与 DOMA 相关的焦点原则和术语如下:
然而随着公司规模的扩大从 100 名工程师到 1000 名工程师我们开始注意到一系列与大大增加的系统庞大性相关的问题。在微服务体系结构中人们用一个单片代码库来交流黑盒黑盒的功效随时可能改变很容易导致意外行为。
亚当·格鲁克是优步的高级软件工程师。他在优步的前 3.5 年里充实了我们的司机平台团队并资助扩大了我们的司机产物。最近他还是 Uber 工程战略团队的一员专注于高层系统架构和 Uber 平台化事情。
Uber 险些每个主要领域都受到 DOMA 的某种水平的影响。在已往的一年里我们主要关注 Uber 的业务层它为我们的各个业务线提供了通用逻辑。
最后的想法
可用性风险高。在一个单一的代码库中举行一次回归可以使整个系统(在本例中是 Uber 的所有部门)瓦解。
部署高风险高成本。在频繁需要回滚的情况下执行这些操作既痛苦又耗时。
关注点分散差。用庞大的代码库很难保持关注点的良好分散。
在指数增长的情况中权宜之计有时会导致逻辑和组件之间的界限差。
执行效率低。这些问题的联合使得团队很难自主或独立地执行任务。
可用性风险高。
在一个单一的代码库中举行一次回归可以使整个系统(在本例中是 Uber 的所有部门)瓦解。
部署高风险高成本。
在频繁需要回滚的情况下执行这些操作既痛苦又耗时。
关注点分散差。用庞大的代码库很难保持关注点的良好分散。在指数增长的情况中权宜之计有时会导致逻辑和组件之间的界限差。
执行效率低。这些问题的联合使得团队很难自主或独立地执行任务。
数据扩展提供了一种将任意数据附加到接口的机制以制止焦点平台数据模型膨胀。对于数据扩展我们使用 Protobuf 的任何功效以便团队可以向请求添加任意数据。
服务通常会存储这些数据或将其通报给逻辑扩展这样焦点平台就不会卖力反序列化(从而“相识”)这个任意上下文。Protobuf 的任何实现都市带来一些基础设施开销以换取更强的类型。为了更简朴的实现可以很容易地使用 JSON 字符串来表现任意数据。
最近人们劈面向服务的系统架构和微服务系统架构的缺点举行了大量的讨论。
只管仅仅在几年前由于微服务体系架构提供了许多利益如独立部署的灵活性、明确的所有权、提高系统稳定性以及更好地分散关注点等但近年来人们开始谴责微服务的倾向极大地增加了庞大性有时甚至使微小的特性也难以构建。
系统可。
本文关键词:华体会最新官网,hth华体会体育,hth体育官网
本文来源:华体会最新官网,hth华体会体育,hth体育官网-www.weichuangrz.com