Spring cloud Alibaba---nacos注册中心

微服务介绍

从互联网早期到现在,系统架构大体经历了以下几个过程:单体应用架构----垂直应用架构----分布式架构----SOA架构----微服务架构,还有service mesh(服务网格化)

单体应用架构:一般的网站流量小,服务简单,包含很多模块,做成一个web项目,然后部署到tomcat服务器上,
优点:架构简单,开发成本低,维护方便
缺点:对于大型项目不便于开发和维护,项目耦合度高,单点容率低,无法针对不同模块进行针对性优化和水平扩展

垂直应用架构:就是将原来的一个应用拆分成互不相干的几个应用,以提升效率,比如我们将电商的单体应用拆分成多个系统,包含电商系统(用户管理,商品管理,订单管理),后台系统(用户管理,订单管理,客户管理),CMS系统(广告系统,营销系统),拆分完毕后,用户访问量大了,只增加电商系统节点就行了
优点:系统实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平扩展,提高单个系统的容错
缺点:系统之间相互独立,无法相互调用,会有重复的开发任务

分布式架构:就是在垂直架构的基础上将不同系统的重复代码抽离出来,做成统一的业务层作为独立的服务,然后由前端控制层调用不同的业务服务,把项目拆分成表现层和服务层,服务层包含业务逻辑,表现层只需要和页面交互,业务逻辑都是调用服务层的服务来实现的
优点:抽取公共的功能为服务层,提高代码服务复用性
缺点:系统间耦合度高,调用关系错综复杂,难以维护

SOA架构:当服务越来越多,容量的评估,小服务资源的浪费问题较多,此时需要一个调度中心对集群进行实时的管理,用于资源调度和治理中心是关键
优点:使用治理中心解决服务之间调用关系的调节
缺点:服务之间会有依赖关系,一旦某个环节出错影响较大,服务关系复杂

微服务架构:与SOA相比,微服务架构更加强调服务的彻底拆分,每个服务之间互不影响,每个服务独立部署,微服务架构更加轻量,更加适合敏捷开发
优点:服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展,微服务之间采用Restful等轻量级http协议相互调用
缺点:分布式系统开发的技术成本高(容错、分布式事务等)复杂性更高。各个微服务进行分布式独立部署,当进行模块调用的时候,分布式将会变得更加麻烦。

微服务架构常见问题:
这么多小服务,如何管理他们?(服务治理 注册中心[服务注册 发现 剔除]) nacos
这么多小服务,他们之间如何通讯?(restful rpc dubbo feign) httpclient(“url”,参数), springBoot restTemplate(“url”,参数) , feign
这么多小服务,客户端怎么访问他们?(网关) gateway
这么多小服务,一旦出现问题了,应该如何自处理?(容错) sentinel
这么多小服务,一旦出现问题了,应该如何排错? (链路追踪) skywalking

常见微服务架构

  1. dubbo: zookeeper +dubbo + SpringMVC/SpringBoot
    配套 通信方式:rpc
    注册中心:zookeeper / redis
    配置中心:diamond
    2.SpringCloud:全家桶+轻松嵌入第三方组件(Netflix)
    配套 通信方式:http restful
    注册中心:eruka / consul
    配置中心:config
    断 路 器:hystrix
    网关:zuul
    分布式追踪系统:sleuth + zipkin
    3.SpringCloud Alibaba
    Spring Cloud 以微服务为核心的分布式系统构建标准
    在这里插入图片描述
    在这里插入图片描述

spring cloud Alibaba 环境搭建

1.基于springboot的父maven项目
2.创建两个服务(订单和库存服务)

版本说明:github搜索springcloud查看
springcloudAlibaba:2.2.5 RElease
springboot:2.3.2release
springcloud:hoxton SR8
版本依赖关系使用了springcloudAlibaba的版本,之后的微服务组件会自动选择相适应的版本

Alibaba微服务组件Naos注册中心

一个更易于构建云原生应用的动态服务发现,服务配置和服务管理平台
集 注册中心 配置中心 服务配置 平台
nacos的关键特性包括
1.服务发现和服务健康检测
2.动态配置服务
3.动态dns服务
4.服务及其元数据管理
解决了所有微服务之间调动关系错综复杂难以维护的问题

核心功能
Nacos Discovery
服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地
址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。
服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防
止被剔除。默认5s发送一次心跳。
服务同步:Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。 leader raft
服务发现:服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面
注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注
册表信息更新到本地缓存
服务健康检查:Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳
的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该
实例(被剔除的实例如果恢复发送心跳则会重新注册)

nacos安装下载
nacos使用

猜你喜欢

转载自blog.csdn.net/wangjunlei666/article/details/129695982
今日推荐