微服务架构

开篇,什么是微服务

在搞清楚什么是微服务之前,我们先来弄明白什么是分布式系统。分布式系统就是由多台计算机节点组成的系统,也叫多机系统,各节点之间通过网络通信协同作业。

随着业务的发展,网站流量不断增加,单机系统承受不住压力势必向多机系统转化,以提升系统的抗压和负载能力,这种转化扩展有纵向的分层,也有横向负载均衡和业务拆分。多机系统比单机系统更方便扩展和维护,以及提升系统的计算和存储能力。

 插图1:一个人托举巨石,吃力流汗且崩溃;而多人一起托举,就变得轻松了

什么是微服务?微服务与分布式系统存在怎样的关系?微服务,顾名思义就是微小的服务,它是服务中的服务,是为了完成某个特定网站服务,而组织在一起协同作业的一些微小且专业的服务,微服务以完成某个特定功能为目标。

从另外一个层面来说,微服务也是一种设计理念,是构建在分布式系统之上的架构设计模式,它为解决分布式系统业务复杂度和代码耦合性过高的问题提供了解决方案。微服务体现了分而治之和高内聚低耦合的设计思想,微服务化是一个对复杂系统解耦、重组,提取公共组件和服务化的过程。

插图2:蚂蚁搬运肉虫子,分工为:指挥(戴安全帽吹哨子)、调度(举牌子指方向)、搬运工

微服务,是把双刃剑

任何事物都有两面性,微服务也不例外,为我们带来好处的同时,也会让我们付出一定的代价。

插图3:任何事物都是一把双刃剑

微服务给我们带来了三个好处:

第一个好处是有效解决了单体应用复杂度和耦合度过高的问题,使系统扩展变得更加容易。

第二个好处是各个微服务可以采用不同的技术栈,开发、部署、扩展变得更加独立、灵活和方便。

第三个好处是通过提取公共组件减少了重复建设和资源浪费。

微服务带来的弊端和挑战也有三个:

第一个挑战是接口调用的维护和沟通成本增加了。

第二个挑战是分布式事务和系统容错所带来的挑战。

第三个挑战是运维和测试的难度加大了。

微服务,如何落地

关于微服务的落地,业界有个知名的方法论叫领域驱动设计,英文是Domain-Driven Design,简称DDD。该方法论是构建微服务系统额主流设计思想,它为建立一个边界清晰可复用的企业中台业务模型提供了理论依据,可用于指导微服务的边界划分和中台领域建模的设计。

DDD具体实施分为三个步骤:

首先对业务系统进行切分,根据业务功能划分为若干个业务领域,同时定义主领域模型,将功能逻辑相对完整的领域设立为主领域。

其次逐一对各业务领域的功能属性进行梳理,以主领域模型为基准,横向扫描其他各领域模块,将公共功能模块提取出来,合并到主领域模型,然后重构主领域模型。

最后在技术层面进行落地,以领域模型为依据,在系统技术层面上完成微服务的拆分和设计。

插图4:DDD三部曲:

划分领域并定义主领域;提取公共模块重构系统;在技术层面上落实

微服务,开源框架之比较

微服务在技术实现层面有哪些主流的开源框架,它们各自有哪些优势和不足呢?

Spring Cloud,是Pivotal公司为构建微服务应用提供的一整套基础工具和解决方案,降低了微服务开发和管理的难度,为微服务架构提供了更加全面的技术支持。目前它是所有微服务技术栈中的翘楚。Spring Cloud底层是基于Spring Boot开发实现的,所以它能够与Spring Framework、Spring Data、Spring Batch等Spring开源项目完美融合。

插图5:目前Spring Cloud是最受欢迎也是应用最广泛的微服务技术栈

(漫画:Spring Cloud站在冠军领奖台上,Dubbo亚军,Thrift季军,gRPC和Tars位居其后)

Spring Cloud 是目前应用最广泛的微服务框架,提供了较为完整的企业级实施微服务的解决方案。它的聪明之处在于,把市场上那些经得起考验的分布式框架技术整合起来,通过Spring Boot进行封装,吸各家之长为己所用,形成了Spring Cloud自己的组件,且屏蔽掉那些晦涩难懂的细节,给开发者提供了一套简单易用的分布式系统开发工具包。

Dubbo ,是阿里开源的一款高性能轻量级Java RPC 框架,提供了三个核心能力:面向接口的远程方法调用、智能容错与负载均衡、服务自动注册和发现。

Thrift,Facebook开发的功能强大的软件堆栈和代码生成引擎,是一个 RPC 框架,跨语言能力较强,可构建在 C++、Java、Python、PHP 等多种语言间无缝结合的、高效的服务。

gRPC,是谷歌开源的高性能通用 RPC框架。gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩与单 TCP 连接上的多路复用请求等特性,这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

Tars,是腾讯内部使用的微服务框架,多年实践成果总结而成的开源项目,包含一整套开发框架与管理平台,兼顾多语言、易用性、高性能与服务治理,其理念是让开发更聚焦业务逻辑,让运营更高效。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值