go-micro 分类

go-micro 动态加载插件源码分析 有更新!

go-micro 框架支持动态加载插件,无需修改代码。

源码分析

启动服务前,设定 MICRO_PLUGIN 环境变量指定 .so 文件路径,支持多个插件,逗号分割。程序启动前会读取 MICRO_PLUGIN 环境变量,并完成插件设定。

下面是其内部实现:

go-micro/service.go

从上面的代码可以看出,service 初始化化的时候,读取 MICRO_PLUGIN 环境变量中指定的 .so 文件路径。并且调用 plugin 包,逐个 Init

下面我们看下 plugin 包的实现:

阅读全文 »

XConf : Golang 构建的开源分布式配置中心 有更新!

Github项目地址 | 线上demo

微服务架构愈演愈烈,但是社区一直缺少一个部署简便,高可用的配置中心。
XConf 是一个基于 go-micro 微服务框架构建的分布式配置中心,提供配置的管理与发布、实时推送。

design.png

配置中心底层存储采用 MySQL 数据库,主要分为三个服务:

  • config-srv : 负责底层配置的读写
  • admin-api : 负责与管理页面交互,相关鉴权,账号体系也会与此模块交互
  • agent-api : 负责与客户端交互,提供配置读取和推送。

配置中心本身就是一个“读多写少”的服务,所以在 agent-api 服务中增加缓存,从而有效增加并发性能。得益于 go-micro 框架,三个服务可以便捷的横向伸缩。例如,当获取配置的客户端较多时,可以增加 agent-api 实例。

配置获取采用 HTTP 方式实现,配置的实时推送采用 HTTP Long Polling(长轮询)方式实现。选择 HTTP 方式,更加便于各种语言接入配置中心。

Golang 语言读取配置和监听实时配置推送( ➡️ 源码地址 ):

阅读全文 »

【GO-Micro】服务健康检查 有更新!

服务健康检查

在微服务架构中,每个服务都会存在多个实例,可能部署在不同的主机中。因为网络或者主机等不确定因素,每个服务都可能会出现故障。我们需要能够监控每个服务实例的健康状态,当一个服务故障时,及时将它从注册中心删除。

阅读全文 »

【GO-Micro】jaeger分布式链路追踪 有更新!

OpenTracing

OpenTracing通过提供平台无关、厂商无关的API,使得开发人员能够方便的添加(或更换)追踪系统的实现。 OpenTracing提供了用于运营支撑系统的和针对特定平台的辅助程序库。
jaeger兼容OpenTracing API,所以我们使用OpenTracing的程序库可以方便的替换追踪工具。

阅读全文 »