什么是微服务?

维基上对其定义为:一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选着合适的语言、工具对其进行构建。

这一堆晦涩难懂的解释, 让咱们这些学渣望而却步, 但就有大神带你吃个自助餐, 就整明白了啥是微服务:

将整个微服务大部分核心内容,使用自助餐全套服务比喻,一下就能秒懂,不信你往下看:


上图我们可以看出来:上半部分是自助餐餐厅, 下半部分是餐厅的后厨部分。


· 门口保安-Nginx集群:保安在门口站着稍微简单看一顾客,把顾客带到前台。Nginx负载均衡,把服务引到相应的机器



售票处(柜台)-Eureka 注册中心:顾客没有买票的先买票,当然这个收票中心不单只是售票这么简单,他的背后是餐厅总办公室。



餐厅总办公室-配置中心集群:餐厅总办公室要设置好门票的类型,售价,不同票价有些贵宾服务:如日本和牛是贵宾才才能享用。配置中心集群:为了确保服务的质量,也是做足了准备。三名“大堂”主管,戴着专业的蓝牙耳机在有条不紊的协调着各个服务小组确保服务高可用



前台及服务员-服务统一鉴权:顾客拿着门票来到前台, 前台的服务员会引导我们到相应的桌子上去坐下来。他们也在我们的房间外服务这我们。服务鉴权统一鉴权也就是根据不同的请求给到不同的服务。

烤肉区-服务一:我们吃自助餐我们会到各个区域去领取我们的食物。 烤肉,海鲜,酒水,甜品... 每个区域都有相应的服务人员在服务着我们。 微服务1,微服务2...我们的程序内部就也根据不同的功能分成不同的服务:商品服务, 订单服务...


餐具,纸巾等基础服务-消息中心,调度等的基础服务-:这些我们在进餐过程必须要有的配置, 一般在程序里面就成立外部服务, 这些外部的基础服务由第三方提供。

当美味陆续上桌了,众人开始推杯换盏,很快就盘子“见底儿了”,于是各组都在呼唤服务员添菜撤空盘。这时有一组服务员专门过来应酬大家的要求,确保满足大家的服务要求。他们就是微服务中的“服务网关”,负责将客户端的请求进行统一的协调传递到后厨。



l 后厨-DevOps:这个场地的服务包含:备料、初加工、菜品制作到按需上菜、撤盘、添菜,这个过程就是 “DevOps”,备料、初加工和菜品制作是 Development;按需上菜、撤盘、添菜是 Operations。Dev 和 Ops 的无缝衔接,确保了这里提供了完美的服务给顾客。



后厨人员明确分工,紧锣密鼓的准备着:有两组人专职烤全羊,有两组人负责烤串,有一组人负责拌小菜,还有一组人负责酒水和餐具。他们是微服务中按照业务被拆分的各种服务提供者”(Provider),每种服务都有一组人在提供,这叫服务的多实例,确保服务高可用。



· 我们这伙人按照团队很快分成了几堆儿,坐享其成!我们就是微服务中的外部消费者”(Consumer)。



羊排最受大家的喜欢,成为“稀缺资源”,供不应求。服务员上羊排时,先按批上,一批提供给几组人,这个就是微服务中的“服务限流”。


当每组都拿到羊排之后,有几组很快就消灭没了。于是,继续不停呼唤服务员要羊排,这时候服务人员虽然应答了大家的需求,可是羊排补充的速度逐渐下降,开始用肉串替代羊排了,这个就是微服务中的服务降级”。


再后来羊排没有了,后续再要羊排就直接被告知已上完,这个就是微服务中的服务熔断”。服务限流、服务降级和服务熔断属于微服务中服务运行时的服务治理Governance)。


这个场地同时接待很多客人,如何避免有人重复领取哈根达斯冰淇淋(限量的)?我们在领取哈根达斯时,服务员会看验证单,知道我们是否已经领取过,这个就是微服务中的“服务鉴权”,服务只提供给有授权的消费者。

落地一个微服务平台要比在这里筹备自助餐要复杂的多,随着容器云、云原生、DevOps、微服务技术的落地成熟,产业互联网将得到 IT 技术的有效支撑,微通过open-capacity-platform ,您将了解到一个企业微服务的基础框架,如何部署服务注册中心集群,如何开发服务网关,如果服务鉴权,如何做服务保护,服务监控,以及DevOps。服务的技术会越来越多技术会应用。