一个微服务主要有三个角色:服务提供者、服务的消费者、服务注册中心(服务代理)。
服务注册
服务,如用户服务、库存服务订单服务,都启动在服务提供者的服务器中,服务提供者的服务器有一个服务管理容器,服务就在这个容器中运行。
当服务启动时,服务容器会根据配置,将服务提供者可以提供的列表,像注册中心注册。
因此,服务注册中心,可以知道哪些服务器上都启动了哪些服务。一个服务都启动在哪些服务器上。
服务调用
服务消费者程序(应用程序),通过服务接口请求服务。
在Dubbo中,服务提供者程序要提供一个服务接口——java接口,服务的消费者程序依据接口编程,使用时也是调用接口。接口背后其实是一个接口代理,通过代理模式,将接口请求,传递到服务框架客户端,由框架客户端完成调用。
框架客户端首先会查找服务接口的提供者,如果本地存储的列表中没有,则会从注册中心查找。框架拿到提供者列表后,会通过负载均衡算法,从列表中算出一台服务器,进行远程通信。
服务器提供者,从表中获取要调用的服务(接口类),直接唤醒对应类,将请求参数传入。计算出返回值后,包装成响应数据包,通过之前的通信连接返回。
服务框架客户端收到结果后,将结果解出来,返回给服务消费者程序。
调用时序图如下:
问题2:
关于微服务架构(中台架构、领域驱动模型、组件设计原则),你有什么样的思考和认识?
微服务架构中重要的原则是:倒三角模型,即首先看需求(有什么问题),其实是实现需求有什么价值,再次,需要遵循的原则有哪些,最佳实现有哪些,最后看,工具有哪些。做的时候是反过来做的,
从给的微服务和中台的例子中也可以看出,最主要的其实是需求,微服务也好,中台也好,终究只是一个技术工具。如果没有理清楚需求,即使用最先进的技术,也无法解决自己的问题。
网友评论