Skip to content

服务注册与发现

Owen edited this page Apr 30, 2019 · 7 revisions

服务注册与发现是所有的分布式服务都会涉及到的,常见的有zookeeper 、eureka、consul、etcd。 Uragano目前支持consul和zookeeper,推荐使用consul,因为它安装配置简单,支持多数据中心,支持k/v存储,可以扩展为配置中心。不推荐用zookeeper,因为CAP理论,zk是选择CP而不是AP,所以不适合做服务发现,以后会考虑集成eureka。

题外话:特别是在做分布式应用时,不可能还通过配置文件做配置,我个人也基于consul实现了一个配置中心

             services.AddUragano(Configuration, builder =>
             {
                 builder.AddClient();
                 builder.AddConsul();
                 或者
                 builder.AddZooKeeper();
             });

当然也可以选择使用其他产品,你可以实现IServiceDiscovery接口,然后通过AddServiceDiscovery方法注入。

             services.AddUragano(Configuration, builder =>
             {
                 builder.AddClient();
                 builder.AddServiceDiscovery<CustomServiceDiscovery>();
             });

IServiceDiscovery接口定义了OnNodeLeave,OnNodeJoin两个事件,可用于服务状态监控,比如某个服务宕机了可以给运维发送邮件等。