单体架构-》SOA-》微服务:
1. 从三层到mvc单体架构(特点:用户少并发少,并发增加),便于管理在一个项目中,但项目越来越大满足不了需求过于臃肿、不能拓展(有些模块需要进行扩展有些无需扩展)、资源不能分离。
2.SOA和微服务都是架构思想,基于SOA的架构思想将重复公用的功能抽取为组件,以服务的方式给系统提供服务,系统与服务之间采用webservice、rpc等方式进行通信,ESB企业服务总线作为项目与服务之间通信的桥梁。EAI是什么,各个系统间互联,相互传数据的解决方案,原来通过socket通讯方式,只能在同一平台上进行通讯。基于中间系统,为了能满足跨平台的通讯,出现了webserver松耦合的通讯方式,数据通过xml传输。ESB包含了EAI的功能,简单 来说 ESB 就是一根管道,用来连接各个服务节点。为了集 成不同系统,不同协议的服务,ESB 做了消息的转化解释和路由工作,让不同的服务互联互通。与API网关统一层面的东西,在微服务思想中叫API网关,SOA思想中是ESB,在之前是EAI。
3. 前端代码和后台得分离,将后台代码分布在多个服务器上,负载均衡,缓解并发压力。慢慢对于模块中不同的需求,某个模块需要更多的服务器有些或许对性能要求不高,从而产生了微服务化,将原有的业务拆成独立的工程, 独立部署,灵活扩展。微服务是以每一个独立组件(例如用户服务,商品服务)为单位进行部署,每个模块为一个独立模块进行部署,通过调用相关的接口来实现交互。微服务是协作小而自治的服务:小专注于一件事,自治每个服务独立部署不受影响,协作每个服务是个体组成了整体相互交互沟通。微服务架构(Microservices Architecture)是将系统拆分为多个应用服务。应用服务实现具体的业务功能,单独部署维护。应用服务之间通过轻量级通信框架进行,并且支持应用服务用不同技术或者平台实现。微服务架构是SOA架构设计思想另一种实现方式。SOA 是粗粒度,松耦合的服务架构,异构系统间的服务通讯。微服务是按业务边界做细粒度的拆分和部署。
API网关是什么?系统暴露在外面的一个唯一入口,像一个公司的门卫承担着寻址、限制进入、安全检查、位置引导等功能。2个系统间或者服务端与客户端间通讯,加上一个中间件协作API调用,那就是API网关。同时API网关上可以实现协议转换,负载均衡,请求路由,流量控制等,若涉及到对系统的请求,并且能够从业务中抽离出来的功能,都有可能在网关上实现。
Ocelot是一个用.NET Core实现并且开源的API网关。实现了路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Butterfly Tracing集成。下图网上找的说的蛮清楚:
涉及授权的将集成Identity Server。
集群:
增加consul:
详细参考这篇文章https://www.cnblogs.com/jesse2013/p/net-core-apigateway-ocelot-docs.html
以上是一个负载均衡的API网关,但是不能自动发现服务要手动进行配置,孕育而生的consul,服务发现。如何服务发现呢?
简单理解了一下:consul是个集群,有consul server leader和consul server follower服务器,然后在有很多服务,如服务A,B,C等,在他们的服务器上会安装consul client,服务注册到consul client上,当有个服务要调用其他服务时,如服务D要调用服务B,服务D告诉服务器上的consul client,consul client通知consul server查找服务B的信息,服务D最终调用了服务B。
网上有文章如何实现如下地址: