如何给女朋友解释什么是微服务


如何给女朋友解释什么是微服务

文章插图
微服务:微服务是基于分而治之的思想演化出来的 。过去传统的一个大型而又全面的系统,随着互联网的发展已经很难满足市场对技术的需求,于是我们从单独架构发展到分布式架构,又从分布式架构发展到 SOA 架构,服务不断的被拆分和分解,粒度也越来越小,直到微服务架构的诞生 。
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值 。
每个服务运行在其独立的进程中,服务和服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API) 。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等 。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建 。
现在市面常见的微服务框架主要有:Spring Cloud 和 Dubbo
如何给女朋友解释什么是微服务

文章插图
服务注册发现
服务注册发现:服务注册就是维护一个登记薄,服务注册就是维护一个登记簿,它管理系统内所有的服务地址 。当新的服务启动后,它会向登记 簿交待自己的地址信息 。服务的依赖方直接向登记簿要 Service Provider 地址就行了 。当下用于服务注册的工具非常多 ZooKeeper,Consul,Etcd, 还有 Netflix 家的 eureka 等 。服务注册有两种形式:客户端注册和第三方注册.
服务注册(zookeeper)服务注册是服务自身要负责注册与注销的工作 。当服务启动后向注册中心注册自身,当服务下线时注销自己 。期间还需要和注册中心保持心跳 。心跳不一定要客户端来做,也可以由注册中心 负责(这个过程叫探活) 。这种方式的缺点是注册工作与服务耦合在一起,不同语言都要实现一套注册逻辑 。
如何给女朋友解释什么是微服务

文章插图


服务发现当服务调用方调用某个服务的时候,可以通过服务的名字去服务注册发现中心获取可用的服务,服务发现中心从内存的服务列表获取所有可用的服务,然后负载均衡根据既定的规则选择一个服务将 HTTP 服务 ip port 返回给调用方,如果是grpc服务,从连接池获取该服务的连接返回给调用方 。
如何给女朋友解释什么是微服务

文章插图
API网关
API网关:API网关是一个服务器,是系统的唯一入口 。从面向对象设计的角度看,它与外观模式类似 。API网关封装了系统内部架构,为每个客户端提供一个定制的API 。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理 。
API Gateway 负责请求转发、合成和协议转换 。所有来自客户端的请求都要先经过 API Gateway,然后路由这些请求到对应的微服务 。API Gateway 将经常通过调用多个微服务来处理一个请求以及聚合多个服务的结果 。它可以在 web 协议与内部使用的非 Web 友好型协议间进行转换,如HTTP 协议、WebSocket 协议 。
API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能 。通常,网关也是提供REST/HTTP的访问API 。服务端通过API-GW注册和管理服务 。
如何给女朋友解释什么是微服务

文章插图
请求转发服务转发主要是对客户端的请求安装微服务的负载转发到不同的服务上 。
相应合并把业务上需要调用多个服务接口才能完成的工作合并成一次调用对外统一提供服务 。
协议转换重点是支持 SOAP、JMS比如 Rest 间的协议转换 。
数据转换重点是支持 XML 和 Json 之间的报文格式转换能力(可选) 。
安全认证?基于 Token 的客户端访问控制和安全策略;?传输数据和报文加密,到服务端解密,需要在客户端有独立的 SDK 代理包;?基于 Https 的传输加密,客户端和服务端数字证书支持;?基于 OAuth2.0 的服务安全认证(授权码,客户端,密码模式等) 。
配置中心
配置中心:配置中心一般用作系统的参数配置,它需要满足如下几个要求:高效获取、实时感知、分布式访问 。
zookeeper 配置中心实现的架构图如下所示,采取数据加载到内存方式解决高效获取的问题,借助 zookeeper 的节点监听机制来实现实时感知 。