DAY01-微服务

         认识微服务:什么是微服务?

                单体架构:单体架构是将项目的所有功能集中在一个项目中开发,打成一个包部署。

                单体架构的优点:
                        1.架构简单
                        2.部署的成本低

                单体架构的缺点:
                        1.耦合度高,未来那天修改了代码,可能会导致相关的功能出现

                分布式架构:分布式架构是对项目结构进行拆分,独立开发,每一个功能都对应一个项目,称为一个服务。

                分布式架构的优点:
                        1.降低了代码的耦合度,我们修改代码的时候不会对其他功能产生影响。
                        2.有利于以后对服务升级拓展新的功能

                分布式架构要考虑的问题:
 

         微服务:

                微服务是经过良好架构设计的分布式架构方案,微服务架构的特征:
                        1.单一职责:微服务拆分的力度小,每一个服务对应一个业务能力,做到单一职责,避免重复业务开发。
                        2.面向服务:微服务对外暴露业务接口。
                        3.自治:        团队独立,技术独立,数据独立,部署独立。
                        4.隔离性强:服务调用做好隔离,容错,降级,避免出现级联问题。
                

 两个不同架构的特点:
        单层架构:简单方便,高度耦合,扩展性差,适合小型的项目。
        分布式架构:低耦合,扩展性好,但架构比较复杂,难度大,适合大型互联网项目
        微服务: 
                优点:拆分力度更小,服务更独立,耦合度更低
                缺点:架构非常复杂,运维,监控,部署难度提高

                
 


微服务技术对比:
        

 

 


SpringCloud:
        1.SpringCloud是目前国内使用最广泛的微服务框架。
        2.SpringCloud集成了各种微服务功能的组件。并基于SpringBoot实现了这些组件的自动装配,从而提高了良好的体验。
 

服务拆分注意事项:
        

 

微服务调用方式:
        1.基于RestTemplate发起的http请求实现远程调用
        2.http请求做远程调用是与语言无关的调用,只要知道对方的ip,端口,接口路径,请求参数即可。

提供者与消费者:
        服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其他微服务)
        服务消费者:一次业务中,调用其他微服务的服务。
一个服务可以同时扮演提供者和消费者。


注册中心(Eureka):
        远程调用的问题:
                1.服务消费者该怎么获取到服务提供者的地址信息
                2.如果有多个服务提供者,消费者该如何选择
                3.消费者如何得知服务提供者的健康状态

 Eureka的作用:

 

 在Eureka架构中,微服务角色有两类:
        EurekaServer:服务端,注册中心
                1.记录服务信息
                2.心跳监控
        EurekaCliont:客户端
                1.Provider:服务提供者:
                        1.1:注册自己的信息到EurekaServer
                        1.2:每隔一段时间向EurekaServer发送心跳
                2.consumer:服务消费者
                        2.1:根据服务名称从EurekaServer中拉取服务列表
                        2.2:基于服务列表做负载均衡,选中一个微服务后发起远程调用

搭建注册中心:
        1.引入eureka-server依赖
        2.添加@EnableEurekaServer注解
        3.在配置文件中配置eureka地址



 

服务注册:
        1.引入eureka-client依赖
        2.在配置文件中配置eureka地址

 

 服务发现:
        1.引入eureka-cilient依赖
        2.配置eureka地址
        3.给RestTemplate添加@LoadBalanced注解
        4.用服务者提供的服务名称实现远程调用

 


Ribbon负载均衡
        

 策略:Ribbon的负载均衡是使用IRule的接口来定义的,下面的每一个子接口都是一种规则。

 

 

 


 Nacos注册中心:Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。
        

 

 

 

1. Nacos 服务分级存储模型
一级是服务,例如 userservice
二级是集群,例如杭州或上海
三级是实例,例如杭州机房的某台部署了 userservice 的服务器
2. 如何设置实例的集群属性
修改 application.yml 文件,添加 spring.cloud.nacos.discovery.cluster -name 属性即可

 

1. NacosRule 负载均衡策略
优先选择同集群服务实例列表
本地集群找不到提供者,才去其它集群寻找,并且会报警告
确定了可用实例列表后,再采用随机负载均衡挑选实例
1. 实例的权重控制
Nacos 控制台可以设置实例的权重值, 0~1 之间
同集群内的多个实例,权重越高被访问的频率越高
权重设置为 0 则完全不会被访问

 

1. Nacos 环境隔离
每个 namespace 都有唯一 id
服务设置 namespace 时要写 id 而不是名称
不同 namespace 下的服务互相不可见
 

 Eureka与Nacos的区别:

1. Nacos eureka 的共同点
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康检测
2. Nacos Eureka 的区别
Nacos 支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
临时实例心跳不正常会被剔除,非临时实例则不会被剔除
Nacos 支持服务列表变更的消息推送模式,服务列表更新更及时
Nacos 集群默认采用 AP 方式,当集群中存在非临时实例时,采用 CP 模式; Eureka 采用 AP 方式

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值