微服务与Spring Cloud
架构概述
架构的发展
一.架构的类型:
1.业务架构
2.应用架构
3.技术架构
三者的关系是,业务架构觉得应用架构,技术架构支持应用架构.
复制代码
二.应用架构的发展历程
1.单体架构
2.分布式架构
3.SOA
4.微服务
复制代码
单体架构
只包含表现层,业务层没数据访问层,只需要一个包就可以部署了。
优点
- 易于开发
- 易于测试
- 易于部署
缺点
- 灵活度不够
- 降低系统的性能
- 系统启动慢
- 系统拓展性差
分布式架构
传统的分布式架构,按照业务垂直切分,每个应用都是单体架构,通过API互相调用。
面向服务的SOA架构
面向服务的架构是一种软件体系架构,其应用程序的不同组件通过网络上的通信协议可以像其他组件提供服务或者消费服务,所以也是一种分布式架构,简单来说SOA是不同的业务家里不同的服务,服务之间的数据交互粗粒度可以通过服务接口分级,这样可以松散耦合提高服务的可重用性,也让业务逻辑变得可组合,并且每个服务可以根据使用情况做出合理的分布式并部署,从而额让服务变得规范
SOA结构中有两个主要角色,服务提供者和服务消费者,Dubbo是SOA的典型实现。
SOA的优点:
- 降低了模块的耦合度
- 项目开发可以实现拆分
- 灵活拓展
- 灵活部署
SOA的缺点 系统之间的交互需要使用远程通信,接口开发增加了工作量.
微服务架构
微服务是一种架构风格,对于大型复杂的业务系统,它的业务功能可以拆分为多个互相独立的服务,各个微服务之间是松耦合的,通过各种远程协议进行同步/异步通信,各个微服务可以被福利的部署,扩/缩容以及升/降级。
中间件
中间件概述
中间件,操作系统和数据库并列为传统基础软件的三驾马车。中间件是难度极高的软件工程。中间件本质上数据技术架构,常见的中间件分别是服务治理中间件(如Dubbo等RPC框架),配置中心,全链路监控,分布式事务,分布式定时任务,消息中间件,API网关,分布式缓存,数据库中间件等。
SpringCloud的概述
SpringCloud也是一个中间件,基于SpringBoot开发,提供了一套完整的额微服务解决方案。包括服务注册于发现,配置中心,全链路监控,API网关,熔断等选型中立的开源组件。
SpringCloud包括项目模块
SpringCloud 与配置中心中间件
SpringCloud Config是Spring Cloud生态圈中的配置中心中间件,它把应用原本的房子啊本地的文件中的配置抽取出来放在中心服务器,从而提供更好的管理,发布能力,基于应用,环境,版本三个维度管理。
Spring Cloud 与网关中间件
网关的四大功能:
1.统一接入功能 为各种无限应用提供统一的介入服务,提供了一个高性能,高并发的,高可靠的网关服务。不仅如此,还要支持负载均衡,容灾切换和异地多活。
2.协议适配功能
网关对外的请求协议一般是HTTP和HTTP2协议,而后端提供访问的服务要么是REST协议要么是RPC协议。网关需要根据请求进来的的协议进行协议适配,然后协议转发调用不同协议提供服务。
3.流量管可功能 网关作为所以请求流量的的入口,当强求流量瞬间剧增,需要网关进行熔断和服务降级。在异地多活场景中需要根据请求流量进行分片,路由到不同的机房。
4.安全防护功能
网关需要对所以的请求进行安全防护过滤,保护后端服务。通过与安全风控部门合作,对IP黑名单和URL黑名单封禁控制,做风控防刷,防恶意攻击等。
第一代网关的ZUUL和第二代的网关的Gateway
1.zuul的每个请求的方式分别对每个请求分配一个线程来处理。根据统计zuul的最多能高达1000~2000 QPS.在高并发的情况下。不推荐使用。
2.Spring Cloud Gateway是基于Spring5.0,SpringBoot 2.0和Project Reector等技术开发的网关,旨在为微服务架构提供一种简单,有效,统一的API路由管理方式。Spring Cloud Gateway的底层是基于Netty实现(Netty的线程模型是多线程的reactor模型,使用boss线程和workder线程接收并异步处理请求,具有很强大的高并发处理能力),因此Spring Cloud Gateway完全可以替换zuul。
Spring Cloud与全链路监控中间件
后台系统一般有众多的分布式应用组成。可能一个访问后端会访问多个系统,并且留下日志,但是这些分散的每个业务系统的日志不利于问题的排查和定位。因此需要利用全链路监控中间件手机,汇总并分析肉质信息,进行可视化张氏和监控告警。它具备如下主要功能:
1.定位慢调用:包括web服务(Restful Web服务),慢REST或者RPC服务,慢SQL。
2.定位各种错误:包括4XX,5xx,Service Error
3.定位各种异常,包括Error Exception,Fataal Exception
4.展现依赖和拓扑:域拓扑,服务拓扑,trace拓扑
5.Trace调用链:将端到端的调用,以及附加在这次调用上下文信息,异常日志信息,每个调用点的耗时都呈现给用户进行展示。
6.应用告警:根据运维设定的告警郭泽,扫描指标数据,如违反告警规则,则高进信息上报到重要告警平台。