一,官方定义

1、一些列的独立的服务共同组成系统

2、单独部署,跑在自己的进程中

3、每个服务为独立的业务开发

4、分布式管理

5、非常强调隔离性

二,要实际的应用微服务,需要解决一下四点问题:

1、客户端如何访问这些服务

2、每个服务之间如何通信

3、如此多的服务,如何实现?

4、服务挂了,如何解决?(备份方案,应急处理机制)

客户端访问服务模型

三,一般在后台N个服务和UI之间一般会一个代理或者叫API Gateway

① 提供统一服务入口,让微服务对前台透明

② 聚合后台的服务,节省流量,提升性能

③ 提供安全,过滤,流控等API管理功能

springcloud知识点总结 springcloud的入门详解_客户端

springcloud知识点总结 springcloud的入门详解_SpringCloud_02

四,如此多的服务,如何实现,即如何管理,服务之间如何感知变化,协调的协议。

基本都是通过zookeeper等类似技术做服务注册信息的分布式管理

在微服务架构中,一般每一个服务都是有多个拷贝,来做负载均衡。

1服务之间如何相互感知?服务如何管理?这就是服务发现的问题了。一般有两类做法,也各有优缺点。基本都是通过zookeeper等类似技术做服务注册信息的分布式管理。

2注册到ZK(或类似框架),并通过心跳维持长链接,实时更新链接信息。服务调用者通过ZK寻址,根据可定制算法, 找到一个服务,还可以将服务信息缓存在本地以提高性能。

当服务下线时,ZK会发通知给服务客户端。

 

客户端做:优点是架构简单,扩展灵活,只对服务注册器依赖。缺点是客户端要维护所有调用服务的地址,有技术难度,一般大公司都有成熟的内部框架支持,比如Dubbo。

服务端做:优点是简单,所有服务对于前台调用方透明,一般在小公司在云服务上部署的应用采用的比较多。

springcloud知识点总结 springcloud的入门详解_SpringCloud_03

五,服务挂了,如何解决

①重试机制

②限流

③熔断机制

④负载均衡

⑤降级(本地缓存)

springcloud知识点总结 springcloud的入门详解_SpringBoot_04

 

微服务架构需要考虑的问题:

1、API Gateway 代理;

2、服务间调用 服务之间通信方式

3、服务发现 服务之间协调方式

4、服务容错 备份/可靠性

5、服务部署 部署/便捷性

6、数据调用 速度,效率,安全性

springcloud知识点总结 springcloud的入门详解_SpringBoot_05