在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:OF.DistributeService开源软件地址:https://gitee.com/fastdev/OF.DistributeService开源软件介绍:#OF.DistributeService一、基本描述OF.DistributeService 是一个基于Web服务的框架,基于接口方式进行服务声明,使用zookeeper进行服务的注册和订阅。调用方采用 ILEmit 方式生成服务接口的代理类实现对服务的访问,中间过程对客户方透明。 主要核心部件:动态服务代理: 根据服务接口生成调用的代理类,支持负载均衡、容灾、集群、实时扩容和下线以及服务可用状态探测等Registry: 用于服务的注册和服务事件发布和订阅网络通信:基于Http进行请求(POST/GET/DELETE/PUT),可以使用 MVC 或者 Webapi 来进行服务的开发,POST请求在传输格式上支持 JSON 或者 MSGPack 工作原理Provider 暴露服务方称之为“服务提供者”。Consumer 调用远程服务方称之为“服务消费者”。Registry 服务注册与发现的中心目录服务称之为“服务注册中心”,服务注册中心使用Zookeeper 完成 (1) 连通性: 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动和注销时与注册中心交互,注册中心不转 发请求,压力较小 服务提供者向注册中心注册其提供的服务服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者注册中心和服务提供者之间为长连接,服务消费者和注册中心之间也为长连接,服务消费者和服务提供者之间采用短连接。 (.Net 底层相同的地址还是会使用相同的物理连接,所以对于大量请求并不会有连接方面的消耗) 注册中心通过长连接感知服务提供者的存在,服务提供者宕机或者重启,注册中心将立即推送事件通知消费者注册中心宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表 (2) 健状性:Zookeeper 注册中心对等集群,任意一台宕掉后,将自动切换到另一台 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯服务提供者无状态,任意一台宕掉后,不影响使用服务提供者全部宕掉后,服务消费者应用将无法使用,此时消费者的调用将抛出没有可用服务的异常。 (3) 伸缩性: 注册中心为对等集群,可动态增加机器部署zookeeper实例,所有客户端将自动发现新的注册中心服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者 二、示例说明1、项目构成: 本项目分为 4部分,其中 OF.DistributeService.Core 是服务消费者和服务提供者用到的公共库。 OF.DistributeService.Server 是服务注册的库 OF.DistributeService 是WebAPI示例项目,可以参考这个项目构建服务端,也可以直接在项目里面添加服务。 TestOpenRestClient 是服务消费者的测试项目,构建服务消费者可以参考此项目进行 2、测试项目运行步骤: 1)、启动 Zookeeper 服务,待启动完成后进行第二步 2)、修改 OF.DistributeService 项目的配置文件中 ZookeeperHostPort 字段,将正确 zookeeper的ip和端口填入(默认是本机2188端口),然后启动 OF.DistributeService 项目。 3)、同上修改 TestOpenRestClient 项目的配置文件中 ZookeeperHostPort 字段,然后启动 TestOpenRestClient 项目。 4)、如上述步骤有异常,会在运行目录的App_Logs子目录下记录错误信息。如果所有步骤正常,可以看到测试项目的窗体,点击窗体上的按钮会调用服务端方法,并且在下面的文本框中输出结果。 上述步骤中 2、3 步骤可以顺序可以互换,如果先启动消费者项目,点击按钮会提示无法找到可用的服务,待启动服务提供者项目后马上点击按钮又可以正常调用。 部署运行多个服务提供者项目,客户端无需重启即可动态感知到,并且调用的时候会进行负载均衡。服务端下线后,客户端也会感知到,并且后续调用不会定位到下线的服务。 |
请发表评论