微服务架构下的服务治理

服务治理的背景:

  • 如何协调线上运行的服务,以及保障服务的高可用性。
  • 如何根据服务的访问情况合理调配服务器资源,提高机器利用率。
  • 如何动态的对故障业务做降级、流量控制等。
  • 对于大规模服务集群,服务地址的管理以及服务上下线的动态感知。

Apache Dubbo

  1. Dubbo是阿里巴巴内部使用的一个分布式服务治理框架。2012年开源。
  2. 2019年5月,Apache Dubbo正式从孵化器中毕业,成为Apache的顶级项目。
    官网地址:http://dubbo.apache.org/

概念

Apache Dubbo是一个分布式服务框架,主要实现多个系统之间的高性能、透明化调用,简单来说就是一个RPC框架,与普通RPC框架不同的是,它提供服务治理功能,如服务注册、监控、路由、容错等。

架构图

在这里插入图片描述

Apache Dubbo 实现远程通信

  • 创建两个maven工程,分未order-service和user-service;
    文件结构如下:
    在这里插入图片描述

  • 添加Dubbo依赖

<dependency>
    <groupId>org.apache.dubbo</groupId>
     <artifactId>dubbo</artifactId>
     <version>3.0.4</version>
 </dependency>
  • 创建配置文件user-provider.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo
       http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <dubbo:application name="user-service"/>
    <dubbo:registry address="N/A"/>
    <dubbo:protocol name="dubbo" port="20880"/>
    <dubbo:service interface="org.example.service.IUserService" ref="userService"/>

    <bean id="userService" class="org.example.service.impl.UserServiceImpl"/>
</beans>

dubbo:applicatoin 用来描述提供方的应用信息,比如:应用名称(必填)、维护人、版本等;
dubbo:registrty 配置注册中心地址,如果不需要注册中心,可以设置为N/A。
dubbo:protocol 配置服务提供者的协议,比如Hessian、WebService、Thrift等。
dubbo:service 描述需要发布的服务接口。

dubbo的高级应用

dubbo集群容错

dubbo默认提供6中容错模式,默认Failover Cluster。

容错模式 说明
Failover Cluster 失败自动切换 ,默认重试两次
Failfast Cluster 快速失败,立即报错
Failsafe Cluster 失败安全,忽略异常
Failback Cluster 失败后自动回复
Forking Cluster 并行调用多个服务,其中一个成功就返回
Broadcast Cluster 广播调用所有的服务提供者
dubbo负载均衡

dubbo提供四种负载均衡策略,默认random;

  • random :随机算法
  • roundRobin: 轮询
  • leastActive: 最少活跃调用数
  • ConsistentHash: 一致性hash

SpringBoot集成Apache Dubbo

官方文档:https://github.com/apache/dubbo-spring-boot-project

Zookeeper

zookeeper安装

  • 将下载好的安装包解压到指定目录,conf是存放配置文件的目录,bin是zookeeper提供的可执行脚本的目录。
  • ${zookeeper_home)\conf目录下提供zookeeper的核心配置文件样例zoo_sample.cfg;要将zookeeper运行,需要将zoo_sample.cfg该名为zoo.cfg,内容暂时可以不改;
  • 到/bin目录下,执行sh zkServer.sh start 启动服务;
  • 启动服务之后,通过默认发布的2181端口访问;

zookeeper的特性

zookeeper的znode创建时需要指定节点的类型,节点类型分为:

  1. 持久化节点
  2. 临时节点
  3. 有序节点

3.5.3之后增加了两种节点类型,分别为:

  • 容器节点:当容器节下的最后一个节点被删除是,容器节点自动删除;
  • TTL节点:针对持久化节点或者持久化有序节点,可以设置一个存活时间,如果存活时间之内该节点没有任何修改且该节点没有任何子节点,超过存活时间后自动会被自动删除;
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐