Syncer是一个多服务中心的同步工具,专为大型微服务架构设计,支持异构服务中心。它坚持以下信念:
Syncer的运行时架构图如下:
如图所示,
以Service-center为例,详细参见:ServiceCenter 快速入门
必要条件:golang 版本 1.11+
# 从github获取Service-center Syncer最新源码 $ git clone https://github.com/apache/servicecomb-service-center.git $GOPATH/src/github.com/apache/servicecomb-service-center $cd $GOPATH/src/github.com/apache/servicecomb-service-center # go mod 编译设置 $ GO111MODULE=on go mod download $ GO111MODULE=on go mod vendor # 编译 $ cd syncer $ go build
假设有2个服务中心,每个服务中心都有一个用于微服务发现和注册的服务中心集群,如下所示:
Service center | Local address |
---|---|
http://10.0.0.10:30100 | 10.0.0.10 |
http://10.0.0.11:30100 | 10.0.0.11 |
分别在两个机器上启动两个syncer来完成这两个服务中心之间的微服务数据同步
$ ./syncer daemon --sc-addr http://10.0.0.10:30100 --bind-addr 10.0.0.10:30190 --rpc-addr 10.0.0.10:30191
$ ./syncer daemon --sc-addr http://10.0.0.11:30100 --bind-addr 10.0.0.11:30190 --rpc-addr 10.0.0.11:30191 --join-addr 10.0.0.10:30191
分别在两个机器上启动两个syncer集群来完成这两个服务中心之间的微服务数据同步
$ ./syncer daemon --sc-addr http://10.0.0.10:30100 --bind-addr 10.0.0.10:30190 --rpc-addr 10.0.0.10:30191 --mode cluster --node syncer011 --cluster-port 30201 --join-addr 10.0.0.10:30190 $ ./syncer daemon --sc-addr http://10.0.0.10:30100 --bind-addr 10.0.0.10:30290 --rpc-addr 10.0.0.10:30291 --mode cluster --node syncer012 --cluster-port 30202 --join-addr 10.0.0.10:30190 $ ./syncer daemon --sc-addr http://10.0.0.10:30100 --bind-addr 10.0.0.10:30390 --rpc-addr 10.0.0.10:30391 --mode cluster --node syncer013 --cluster-port 30203 --join-addr 10.0.0.10:30190
$ ./syncer daemon --sc-addr http://10.0.0.11:30100 --bind-addr 10.0.0.11:30190 --rpc-addr 10.0.0.11:30191 --mode cluster --node syncer021 --cluster-port 30201 --join-addr 10.0.0.10:30190 $ ./syncer daemon --sc-addr http://10.0.0.11:30100 --bind-addr 10.0.0.11:30290 --rpc-addr 10.0.0.11:30291 --mode cluster --node syncer022 --cluster-port 30202 --join-addr 10.0.0.10:30190 $ ./syncer daemon --sc-addr http://10.0.0.11:30100 --bind-addr 10.0.0.11:30390 --rpc-addr 10.0.0.11:30391 --mode cluster --node syncer023 --cluster-port 30203 --join-addr 10.0.0.10:30190
结果验证
将微服务实例注册到其中一个ServiceCener后30秒,可以从每个ServiceCenter获取有关该实例的信息。
Syncer是一个开发中版本,在下面列出已支持的特性,更多开发中的特性请参考TODO