网站开发需要哪些人怎么分工重庆网站建设技术
web/
2025/10/5 12:14:12/
文章来源:
网站开发需要哪些人怎么分工,重庆网站建设技术,营销软文范例大全300,公众号怎么开通直播功能简介#xff1a; 作为微服务框架的核心引擎--注册中心#xff0c;是必不可缺少的组件#xff0c;市面已经有多款注册中心支持 Go 语言#xff0c;应该如何选择呢#xff1f;我们可以对目前主流的支持 Go 语言的注册中心做个对比。 作者 | 李志鹏
近几年#xff0c;随着 …简介 作为微服务框架的核心引擎--注册中心是必不可缺少的组件市面已经有多款注册中心支持 Go 语言应该如何选择呢我们可以对目前主流的支持 Go 语言的注册中心做个对比。 作者 | 李志鹏
近几年随着 Go 语言社区逐渐发展和壮大越来越多的公司开始尝试采用 Go 搭建微服务体系也涌现了一批 Go 的微服务框架如 go-micro、go-kit、Dubbo-go 等跟微服务治理相关的组件也逐渐开始在 Go 生态发力如 Sentinel、Hystrix 等都推出了 Go 语言版本而作为微服务框架的核心引擎--注册中心也是必不可缺少的组件市面已经有多款注册中心支持 Go 语言应该如何选择呢我们可以对目前主流的支持 Go 语言的注册中心做个对比。 图 1
根据上表的对比我们可以从以下几个维度得出结论
生态各注册中心对 Go 语言都有支持但是 Nacos、 Consul、Etcd 社区活跃zookeeper 和 Eureka 社区活跃度较低易用性Nacos、Eureka、Consul 都有现成的管控平台Etcd、zookeeper 本身作为 kv 存储没有相应的管控平台Nacos 支持中文界面比较符合国人使用习惯场景支持CP 模型主要针对强一致场景如金融类AP 模型适用于高可用场景Nacos 可以同时满足两种场景Eureka 主要满足高可用场景Consul、Zookeepr、Etcd 主要满足强一致场景此外 Nacos 支持从其它注册中心同步数据方便用户注册中心迁移功能完整性所有注册中心都支持健康检查Nacos、Consul 支持的检查方式较多满足不同应用场景Zookeeper 通过 keep alive 方式能实时感知实例变化Nacos、Consul 和 Eureka 都支持负载均衡策略Nacos 通过 Metadata selector 支持更灵活的策略此外Nacos、Eureka 都支持雪崩保护避免因为过多的实例不健康对健康的实例造成雪崩效应。
综合上面各维度的对比可以了解到 Nacos 作为注册中心有一定的优势那么它对 Go 微服务生态的集成做得如何为此我们策划了本系列文章该系列将为大家介绍 Nacos 在 Go 微服务生态集成中做的一些工作和实践经验系列内容将主要包含以下三个篇章
Dubbo-go 云原生核心引擎探索Sentinel-go 外部动态数据源初探go-micro 集成 Nacos 实践
接下来我们首先探索下 Nacos 是如何与 Dubbo-go 集成。
引言
Dubbo-go 目前是 Dubbo 多语言生态中最火热的一个项目从 2016 年发布至今已经走过 5 个年头。最近Dubbo-go 发布了 v1.5 版本全面兼容 Dubbo 2.7.x 版本支持了应用维度的服务注册与发现和主流的注册模型保持一致标志着 Dubbo-go 向云原生迈出了关键的一步。
作为驱动服务运转的核心引擎--注册中心在切换到应用维度的注册模型后也需要做相应的适配本文将解析如何以 Nacos 为核心引擎实现应用维度的服务注册与发现并且给出相应的实践案例。此外本文代码基于 Dubbo-go v1.5.1Nacos-SDK-go v1.0.0 和 Nacos v1.3.2。
服务注册与发现架构
从架构中我们可以看到与接口级别的服务注册发现不同的是Dubbo-go 的 provider 启动后会调用 Nacos-go-sdk 的 RegisterInstance 接口向 Nacos 注册服务实例注册的服务名即为应用名称而不是接口名称。Conusmer 启动后则会调用 Subscribe 接口订阅该应用的服务实例变化并对的实例发起服务调用。 图 2
服务模型
图 3 是我们 Dubbo-go 的应用维度服务发现模型主要有服务和实例两个层级关系服务实例的属性主要包含实例Id、主机地址、服务端口、激活状态和元数据。图 4 为 Nacos 的服务分级存储模型包含服务、集群和实例三个层次。两者对比多了一个集群维度的层级而且实例属性信息能够完全匹配。
所以在 Dubbo-go 将应用服务实例注册到 Nacos 时我们只需要将集群设置为默认集群再填充服务和实例的相关属性即可完成服务模型上的匹配。此外 Nacos 可以将服务注册到不同的 Namespace 下实现多租户的隔离。 图 3 图 4
服务实例心跳维持
Dubbo-go 的 Provider 在向 Nacos 注册应用服务实例信息后需要主动上报心跳让 Nacos 服务端感知实例的存活与否以判断是否将该节点从实例列表中移除。维护心跳的工作是在 Nacos-SDK-go 完成的从图 5 代码中可以看到当 Dubbo-go 调用 RegisterInstance 注册一个服务实例时SDK 除了调用 Nacos 的 Register API 之外还会调用 AddBeatInfo将服务实例信息添加到本地缓存通过后台协程定期向 Nacos 发送服务实例信息保持心跳。
当服务下线时可以通过调用 DeRegisterInstance 执行反注册并移除本地的心跳保持任务Nacos 实例列表中也会将该实例移除。 图 5
订阅服务实例变化
Dubbo-go 的 Consumer 在启动的时候会调用 Nacos-SDK-go 的 Subscribe 接口该接口入参如图 6订阅的时候只需要传递 ServiceName 即应用名和回调函数 SubscribeCallbackNacos 在服务实例发生变化的时候即可通过回调函数通知 Dubbo-go。Nacos-SDK-go 是如何感知 Nacos 的服务实例变化的呢主要有两种方式
Nacos 服务端主动推送Nacos-SDK-go 在启动的时候会监听一个 UDP 端口该端口在调用 Nacos Register API 的时候作为参数传递Nacos 会记录 Ip 和端口当服务实例发生变化时Nacos 会对所有监听该服务的 Ip 和端口发送 UDP 请求推送变化后的服务实例信息Nacos-SDK-go 定期查询SDK 会对订阅的服务实例定时调用查询接口如果查询有变化则通过回调接口通知 Dubbo-go。作为兜底策略保证 Nacos 服务端推送失败后仍能感知到变化。图 6
此外 Nacos-SDK-go 还支持推空保护当 Nacos 推送的实例列表为空时不更新本地缓存也不通知 Dubbo-go 变更避免 Consumer 无可用实例调用造成故障。同时SDK 还支持服务实例信息本地持久化存储可以保证在 Nacos 服务故障过程中Consumer 重启也能获取到可用实例具备容灾效果。
范例实践
1. 环境准备
dubbo-go samples 代码下载https://github.com/apache/dubbo-samples/tree/master/golang基于 Nacos 注册中心的应用级服务发现的 hello world 代码目录在 registry/servicediscovery/nacos图 7
Nacos 服务端搭建参考官方文档https://nacos.io/zh-cn/docs/quick-start.html或者使用官方提供的公共 Nacos 服务http://console.nacos.io/nacos(账号密码:nacos仅供测试)或者购买阿里云服务https://help.aliyun.com/document_detail/139460.html。
2. Server 端搭建
进入 registry/servicediscovery/nacos/go-server/profiles 文件可以看到有 dev、release 和 test 三个文件夹分别对应开发、测试和生产配置。我们使用 dev 配置来搭建开发环境dev 文件下有 log.yml 和 server.yml 文件下面对 server.yml 配置进行修改。
remote 配置这里使用公共的 Nacos 服务address 支持配置多个地址用逗号分割。params 参数配置 nacos-sdk 的日志目录。
remote:nacos:address: console.nacos.io:80timeout: 5sparams:logDir: /data/nacos-sdk/log
configCenter 配置
config_center:protocol: nacosaddress: console.nacos.io:80
配置 server 端环境变量
export CONF_PROVIDER_FILE_PATHserver端的server.yml文件路径
export APP_LOG_CONF_FILEserver端的log.yml文件路径
进入 registry/servicediscovery/nacos/go-server/app运行 server.go 的 main 方法可以从 Nacos 的控制台看到应用 user-info-server 已经注册成功。
Nacos 的控制台地址http://console.nacos.io/nacos/#/serviceManagement?dataIdgroupappNamenamespace 图 8 图 9
3. Client 端搭建
client 的配置文件在 registry/servicediscovery/nacos/go-server/profiles 目录下需要修改的地方跟 server 端一样这里不赘述。
配置 client 端环境变量
export CONF_CONSUMER_FILE_PATHclient端的server.yml文件路径
export APP_LOG_CONF_FILEclient端的log.yml文件路径
进入 registry/servicediscovery/nacos/go-client/app运行 client.go 的 main 方法看到如下日志输出表示调用 server 端成功。 图 10 原文链接 本文为阿里云原创内容未经允许不得转载。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87361.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!