水下功夫做透,水上才能顺风顺水。

微服务介绍

1.微服务

微服务就是把一个应用分解成一组小的服务,每个服务都可以独立运行在自己的进程中,独立部署,独立语音编写,拥有自己独立的数据库。

微服务的好处是不限定服务的提供方使用什么技术,实现跨团队的技术解耦。微服务难在服务的分解,重要之处也是服务的分解。

1.1 特征

语言和数据的去中心化控制。

1.2架构

服务间共用一个最小型的集中式的管理,采用轻量级通信机制。

  • 去中心化基础设施

  • 去中心化数据库

1.3微服务设计模式

  • 聚合式(推荐)

  • 代理(推荐)

  • 链式

  • 分支

  • 异步消息

1.4微服务实现

1.4.1  通信方式

REST和RPC

1.4.2  RPC框架

Dubbo/ Dubbox
Dubbo是阿里开源的一个Java高性能服务框架,但是已经停止维护了,相关的依赖类比如Spring,Netty还是很老的版本。
而当当网在继续维维护,即Dubbox,并且实现了REST的支持。

Motan
新浪微博的服务治理框架,2016年5月开源,Motan是一个小而精的 RPC 框架,它的特点是简单、易用,是一个轻量级 RPC框架。
与Dubbo相比,Motan在功能方面并没有那么全面,也没有实现特别多的扩展。用的人比较少,功能和稳定性有待观望。对跨语言调用支持较差,主要支持java。

Spring Cloud(推荐)
Spring Cloud 完全基于Spring Boot,是一个非常新的项目,2016年才 1.0 release。版本提升非常迅速,发展势头良好。
Spring Cloud依然发扬了Spring Source整合一切的作风,以标准化的姿态将一些微服务架构的成熟产品与框架揉为一体,并继承了Spring Boot简单配置、快速开发、轻松部署的特点, 让原本复杂的架构工作变得相对容易上手一些。服务调用方式是基于REST API的。
缺点是项目很年轻,很少见到国内业界有人在生产上成套使用,一般都是只有其中一两个组件。相关的技术文档大部分是英文的,案例也相对较少,使用的话需要摸索的时间会长一些。

下图是Dubbo和Spring Cloud的对比:

  • gRPC

      Google发布的开源RPC框架,高性能、开源、将移动和HTTP/2放在首位的通用的RPC框架,基于HTTP/2, netty4.1, proto3, 拥有非常丰富而实用的特性,堪称RPC 框架的典范。   但它本身它不是分布式的,所以要实现上面的框架的功能需要进一步的开发。

1.5 分布式和微服务的区分和联系

概念不同:分布式是系统部署方式,用于分散压力;微服务是架构设计方式,分散能力。
微服务通常离不开分布式,生产环境下的微服务肯定是分布式部署的。
分布式部署的应用不一定是微服务架构的,比如集群部署,其逻辑功能上并没有细分服务。

posted @ 2020-05-25 07:46  北方寒士  阅读(186)  评论(0编辑  收藏  举报