sermant适配鲲鹏
什么是 Sermant?
Sermant 是华为开源的一款 Java 应用增强框架,提供无侵入的方式来扩展和增强微服务应用的能力。它通过 Agent 技术在运行时对应用程序进行动态增强,支持微服务治理、动态配置、限流熔断、流量分流等功能。
Sermant 的目标是帮助开发者简化微服务开发和运维,增强服务治理能力,同时减少对业务代码的改动。
Sermant 的核心功能
1. 动态配置管理
• 通过与配置中心(如 Zookeeper、Nacos)集成,实现动态更新配置,无需重启服务。
• 支持多种配置来源,方便适配不同的运行环境。
2. 服务治理能力
• 提供限流、熔断、负载均衡、路由等服务治理功能。
• 通过动态调整策略来提升服务的稳定性和可用性。
3. 灰度发布和流量分流
• 支持按版本、标签等规则进行流量分流,实现灰度发布
• 可以动态调整流量分配策略,便于测试和上线。
4. 无侵入增• 通过 Java Agent 动态植入增强功能,无需修改业务代码。
• 提高应用的灵活性和可维护性。
5. 分布式链路追踪
• 与现有链路追踪工具(如 Skywalking、Zipkin)兼容,提供分布式调用链的可视化能力。
6. 多语言生态
• 当前重点支持 Java 语言,未来可能扩展至其他语言。
Sermant 的架构
1. 核心组件
• Sermant Agent
部署在目标应用的运行环境中,通过 Java Agent 动态增强应用程序。
• Sermant Backend
后台服务,用于存储和管理配置信息、策略等,并将这些信息下发到各个 Agent。
• 插件机制
Sermant 提供了丰富的插件,如动态配置插件、流量分流插件、服务治理插件等,用户可以按需加载。
2. 数据流
• 应用启动时
Agent 被加载,通过拦截和增强应用的字节码,将治理能力植入到应用中。
• 运行时
Agent 与 Backend 通信,实时获取策略和配置的更新。
Sermant 的使用场景
1. 微服务治理
在复杂的微服务环境中,进行动态路由、熔断、限流等治理操作。
2. 动态配置更新
实时更新应用的配置参数,无需重启。
3. 流量分流和灰度发布
对新功能进行灰度测试或对某些用户群体进行精准流量引导。
4. 运维支持
快速响应生产环境中的问题,进行实时调试和调整。
Sermant 的优势
1. 无侵入
不需要修改业务代码,只需简单配置即可使用增强功能。
2. 插件化
以插件形式提供功能,灵活扩展和定制。
3. 生态兼容
支持主流的微服务框架(如 Spring Cloud、ServiceComb)和配置中心(如 Zookeeper、Nacos)。
4. 开源
代码开放,方便开发者二次开发或定制。
常见问题
1. Sermant 支持哪些微服务框架?
• Sermant 目前支持 Spring Cloud、Apache ServiceComb 等主流微服务框架。
2. 如何集成 Sermant?
• 将 Sermant Agent 以 Java Agent 形式加载到应用中,同时部署 Sermant Backend,并配置动态配置中心。
3. Sermant 与其他治理工具有何不同?
• Sermant 提供无侵入增强,插件化设计,更适合与现有业务快速集成。
步骤1:fork 仓库
因为本次没有代码开发,所有不需要fork华为的demo
华为的demo:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoJava/overview
Sermant官网:https://sermant.io/zh/
Sermant github:https://github.com/sermant-io/Sermant
步骤2:适配思路
思路比较简单:在欧拉os上进行部署Sermant backend,使用华为的demo,并使用Sermant agent进行配置连接backend。
判断是否连接成功,并有事件上传。
步骤3:适配过程
1. 配置backend
在${path}/sermant-agent/agent/pluginPackage/dynamic-config/config/config.yaml找到插件的配置文件
dynamic.config.plugin:
enableCseAdapter: false # 是否开启适配CSE
enableDynamicConfig: true # 是否开启动态配置插件
enableOriginConfigCenter: false # 是否开启原配置中心, 默认关闭
修改${path}/sermant-agent/agent/config/config.properties文件为以下内容:
# Heartbeat service switch
agent.service.heartbeat.enable=true
# Gateway service switch
agent.service.gateway.enable=true
# Dynamic config service switch
agent.service.dynamic.config.enable=true
# dynamic mount service switch
agent.service.hot.plugging.service.enable=true
# Event switch
event.enable=true
# Report warn log switch
event.offerWarnLog=true
# Report error log switch
event.offerErrorLog=true
2. 部署Sermant backend
java -Dwebhook.eventpush.level=NORMAL -Ddynamic.config.enable=true -Ddynamic.config.serverAddress=127.0.0.1:2181 -Ddynamic.config.dynamicConfigType=ZOOKEEPER -jar ./server/sermant/sermant-backend-2.1.0.jar
这里需要配置zookeeper的地址和配置中心的类型
3. 使用agent连接backend
java -javaagent:sermant-agent.jar -Dspring.application.name=scb-fence -Dspring.cloud.zookeeper.connectString=127.0.0.1:2181 -jar resource-server.jar
步骤4:购买华为云Gaussdb和ECS,上云测试
产品名称 | CPU架构 | 实例类型 | 公共镜像 | 镜像版本 | 备注 |
---|---|---|---|---|---|
弹性云服务器 | 鲲鹏计算 | 鲲鹏通用计算增强型 | Huawei Cloud EulerOS | Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB) | 推荐 |
步骤5:部署并访问
结果如下:
- 点赞
- 收藏
- 关注作者
评论(0)