sirius
是 EA
元数据服务器,提供服务发现,全局时钟服务,全局配置服务,全局id服务。sirius
服务是 EA
服务的基础服务, EA
服务都会依赖 sirius
服务。
sirius
服务是基于raft一致性算法实现的,保证了服务的高可用性和一致性。同时 sirius
可以作为独立服务,为集群提供服务发现,全局时钟服务,全局配置服务,全局id服务。
服务发现是微服务架构中的一个重要组成部分,服务发现的目的是让服务之间能够相互发现,相互调用。sirius
服务发现功能是基于raft
一致性算法实现的,
保证了服务的高可用性和一致性。sirius
服务发现功能支持服务注册,服务发现,服务心跳检测,服务负载均衡等功能。
业界的服务发现方案有很多,melon
集成了部分已知的服务发现方案,如 ·consul
。为什么我们还要再造一个轮子,出于以下几个原因:
- 快速部署 - 服务尽量独立化,闭环化,减少依赖,减少部署复杂度。
- 多语言支持 - 服务发现是基础服务,需要支持多语言,
sirius
服务发现支持多语言,通过protobuf
数据格式和http
协议进行通信,避免多语言之间的依赖 c++支持 二进制protobuf
协议。 - 减少用户心智负担 - 服务发现是基础服务,使用如
etcd
,consul
等服务发现方案,需要用户自己部署,维护相应的开源软件,接入api,特别是生产环境的运维成本 高,sirius
基于c++
开发,在设计时,我们进行高度的模块化设计,大量模块已经下沉到melon
,turbo
,北斗
各个模块中,并经过上万个单元测试用例测试通过
模块逻辑非常清晰,用户很容易从源码级别对项目有深入的理解, 方便用户进行二次开发。
全局配置服务是微服务架构中的一个重要组成部分,全局配置服务的目的是让服务之间能够共享配置信息。sirius
全局配置服务与其他配置服务不同的是,
sirius
配置服务带有版本控制。在真实的生产环境中,配置的更新通常是一个复杂的过程,需要考虑配置的版本控制,配置的回滚,配置的发布等问题。sirius
的配置
服务设计为配置不可变,配置的更新是通过发布新的配置版本,然后通过配置版本进行切换,这样可以保证配置的一致性,配置的可追溯性。通过git
仓库同样可以实现
配置的版本控制,但是git
仓库在生产环境中使用比较复杂,时效性不高,sirius
配置服务是基于raft
一致性算法实现的,保证了服务的高可用性和一致性。
全局时钟服务在数据的应用中是非常重要的,全局时钟服务可以保证数据的一致性,数据的时序性。sirius
全局时钟服务是基于raft
一致性算法实现的,
保证了服务的高可用性和一致性。sirius
全局时钟服务支持全局时钟同步,全局时钟查询,全局时钟更新等功能。
与全局时钟服务类似,全局id服务在数据的应用中是非常重要的,全局id服务可以保证数据的唯一性,数据的时序性。sirius
全局id服务是基于raft
一致性算法实现的,
当然任何应用如果有全局的id需求,都可以使用全局id服务
。sirius
全局id服务支持全局id生成,全局id查询,全局id更新等功能。