导读:Uber成长很是迅速,工程师团队快速扩充,听说Uber有2000名工程师,8000个代码仓库,部署了1000多个微服务。微服务架构是Uber应对技术团队快速增加,功能快速上线很出色的解决方案。本文偏向微服务的入门篇,以Uber微服务为例,进行了深刻浅出的讲解。数据库
对于微服务没有适当的定义,你能够说它是一个框架,由小型的、独立的可部署的服务组成,执行不一样的操做。安全
微服务专一于单个业务领域,能够做为彻底独立的可部署服务,并在不一样的技术栈上实现它们。服务器
在使用微服务构建本身的应用程序以前,须要清楚地了解应用程序的范围和功能。架构
在当今世界,复杂性已经渗透到产品中。微服务架构可以更好地保持团队的规模和功能。框架
如下是微服务设计的最佳实践:异步
如今,让咱们来看一个用例来更好地理解微服务。分布式
案例:购物车应用程序微服务
当打开购物车应用程序时,你看到的只是一个网站。可是,在幕后,购物车应用程序有接受支付服务、顾客服务等等。
假设开发人员已经在一个总体框架中进行了建立。以下图:
全部功能都放在一个代码库中,并在一个底层数据库下。
如今,假设市场上出现了一个新品牌,开发人员但愿将这个品牌的全部细节都放在这个应用程序中。
他们不只要从新为新标签提供服务,还必须从新构建完整的系统并进行相应部署。
为了应对这种挑战,开发人员决定将其应用程序从单体架构转移到微服务。以下图:
这意味着开发人员没必要建立Web微服务,逻辑微服务或数据库微服务。相反,他们为搜索,推荐,客户服务等建立单独的微服务。
这种应用架构不只有助于开发人员克服之前架构面临的挑战,还有助于轻松构建,部署和扩展购物车应用程序。
在设计微服务时,已经了解了基本的指导方针,如今来了解一下微服务的架构。
一个典型的微服务架构(MSA)应该包括如下组件:
以下图:
这个架构看起来有点复杂,让咱们来简化一下。
一、客户端
架构始于不一样类型的客户端,从不一样的设备尝试执行各类管理功能,如搜索、构建、配置等。
二、身份提供者
这些来自客户端的请求将传递给身份提供者,这些提供者对客户端的请求进行身份验证,并将请求传递给API网关。而后,请求经过定义良好的API网关与内部服务通讯。
三、API网关
因为客户端不直接调用服务,所以API网关做为客户端将请求转发到适当的微服务的切入点。
使用API网关的优势包括:
在接收到客户端的请求后,内部架构由微服务组成,这些微服务经过消息相互通讯来处理客户端请求。
四、消息格式
有两种类型的消息经过它们进行通讯:
下一个问题是,使用微服务的应用程序如何处理数据?
五、数据处理
每一个微服务都拥有一个专有数据库来捕获它们的数据并实现相应的业务功能。此外,微服务的数据库只经过其服务API进行更新。参考下图:
微服务提供的服务被转发到任何支持不一样技术栈的进程间通讯的远程服务。
六、静态内容
在微服务内部进行通讯后,将静态内容部署到基于云的存储服务,经过内容交付网络(CDN)直接将其交付给客户端。
除了上述组件,还有一些其余组件出如今典型的微服务架构中。
七、管理
该组件负责平衡节点上的服务和故障识别。
八、服务发现
用做微服务的指南,以找到它们之间的通讯路由,由它维护节点所在的服务列表。
如今来看看这个架构的优缺点,以更好地理解什么时候使用这种架构。
微服务架构的优势 | 微服务架构的缺点 |
---|---|
自由使用不一样的技术 | 增长故障排除难题 |
每一个微服务都关注单一业务能力 | 因为远程呼叫而增长延迟 |
支持单独的可部署单元 | 增长配置和其余运营工做量 |
容许频繁的软件发布 | 难以保持交易安全 |
确保每项服务的安全性 | 很难跟踪各类服务边界的数据 |
并行开发和部署多个服务 | 服务之间很难移动代码 |
下面来比较一下UBER以前和如今的架构。
Uber以前的架构
像许多初创公司同样,UBER在开始之初在单一城市运营,为单一产品打造了单体架构。当时有一个代码库彷佛被清理了,并解决了UBER的核心业务问题。然而,随着UBER在全球范围内扩张,它们在可扩展性和持续集成方面面临各类各样的问题。
上图描述了UBER以前的架构。
所以,能够发现这里全部的特性,好比乘客管理、计费、通知功能、支付、行程管理和驱动管理都是在一个框架内完成的。
问题陈述
当Uber开始在世界范围扩张时,这种框架引入了各类各样的挑战。如下是一些突出的挑战。
解决方案
为了不此类问题,Uber决定改变本身的架构,效仿亚马逊(Amazon)、Netflix、Twitter等其余超级增加公司。所以,Uber决定将其总体架构拆分为多个代码库,以造成一个微服务架构。
参考下面的图表,看看Uber的微服务架构。
例如,咱们都知道,搜索出租车的人数比预订出租车和付款的人要多。这就获得了一个推论:在乘客管理微服务上工做的流程的数量超过了处理支付的流程的数量。
经过这种方式,Uber将其架构从单一业务转移到微服务中获益。
原文连接: