`
STA2011
  • 浏览: 717 次
文章分类
社区版块
存档分类
最新评论

轻量级分布式服务化框架

    博客分类:
  • rpc
阅读更多
轻量级分布式服务化框架


基本原理


轻量级分部署服务调度框架的基本原理是服务提供方Provider提供rpc服务,同时把ip和端口以及发布的rpc服务注册到注册中心,客户端或者rpc消费者从注册中心获取服务Provider列表,同时获取Provider提供的服务列表。另外客户端还会监听注册中心的数据变化,获知server宕机或者服务不可用,将该Provider从客户端Provider缓存列表中剔除,方便做容错和负载均衡。



特性

一、 负载均衡
提供基于RoundRobin和随机方式的负载均衡
二、 高可用
Consumer会从注册中心获取到服务列表及该服务的提供者列表,如果某个提供者Provider网络异常或者宕机,Consumer能马上感知到,加入不可用列表,如果从注册中心收到服务不可用会剔除缓存,不可用列表会重新尝试发起连接,如果网络正常了会立即恢复。
三、 泛型
一般的rpc调用需要拿到服务提供方的业务api(interface class,入参class,返回值class打包到一个jar中,依赖该jar),如果使用泛型,只需要填写interface的name,版本,方法名称,参数名称,参数值,如果是对象,将对象字段封装到一个Map中即可,无需依赖任何业务jar即可完成rpc调用。
四、 Rpc上下文附件
Rpc调用方可以将需要传递的上下文信息填写到上下文中,而不是作为rpc的入参,这样Provider可以从上下文中获取到掉用方的上下文信息。
五、 高可用注册中心
Rpc 框架提供了zookeeper,etcd,redis pubsub(支持单个,或者sentinel集群模式)的注册中心,具备高可用功能。
六、 实时动态监控
Provider提供了监控的api,监控可以使用该api加入到项目或者公司的监控平台。
七、 内存使用少
Rpc使用的内存模型是tcp连接建立后自动分配一块内存,读和写都在该内存中,不需要为每次请求分配内存,同一个tcp内存复用,数据使用了压缩的方式保存和发送,不支持返回数据量超大的调用(压缩后超过1m)。


整体架构


泛型:GenericService,Consumer不依赖Provider的api jar包即可完成remote api调用
监控:StatMonitor,consumer注册需要的远程服务StatMonitor,调用rpc获取监控数据
Webui:一个可视化rpc管理界面,https://github.com/lindzh/rpc-webui
RPC调用:使用jdk proxy封装发送tcp数据,并等待数据返回,完成RPC调用。
负载均衡:在集群模式下,同一个版本的Rpc服务在多台服务器上部署,Consumer发起rpc调用使用负载均衡。
自动容错:发现rpc provider不可用及时剔除,当可用时加入。
代理:rpcClient注册一个remote intface时会返回一个代理。
多注册中心:提供Zookeeper,etcd,redis等注册中心,并可以实现高可用。



使用

服务端Provider

SimpleRpcServer rpcServer = new SimpleRpcServer();
rpcServer.setHost("192.168.132.87");
rpcServer.setPort(4321);
//将一个service暴露为rpc服务
rpcServer.register(LoginRpcService.class, new LoginRpcServiceImpl());
rpcServer.startService();
// Thread.currentThread().sleep(100000);//wait for call
rpcServer.stopService();



客户端Consumer

SimpleRpcClient rpcClient = new SimpleRpcClient();
rpcClient.setHost("192.168.132.87");
rpcClient.setPort(4321);
LoginRpcService loginRpcService = rpcClient.register(LoginRpcService.class);
rpcClient.startService();
boolean loginResult = loginRpcService.login("admin", "admin");
rpcClient.stopService();


Contact
QQ : 839861706
分享到:
评论

相关推荐

    星尘,轻量级分布式服务框架

    总的来说,星尘轻量级分布式服务框架通过配置中心、集群管理、远程自动发布、服务治理等功能,为开发人员提供了一个高效、稳定的分布式系统构建平台,使得他们能更专注于业务逻辑的实现,而不是基础架构的搭建和维护...

    轻量级分布式实时计算框架light_drtc.pdf

    《轻量级分布式实时计算框架light_drtc》 在当今大数据时代,实时计算框架成为处理海量数据的关键工具。本文将深入探讨一种轻量级的分布式实时计算框架——light_drtc,以及它与主流流式计算框架如Storm和Spark ...

    手把手教你写 轻量级分布式 RPC 框架

    非常好的 轻量级分布式 RPC 框架 学习资料 根据以上技术需求,我们可使用如下技术选型: Spring:它是最强大的依赖注入框架,也是业界的权威标准。 Netty:它使 NIO 编程更加容易,屏蔽了 Java 底层的 NIO 细节。 ...

    Jupiter是一款性能非常不错的轻量级的分布式服务框架

    Jupiter,作为一款性能出色的轻量级分布式服务框架,主要针对Java开发领域,专为构建高可用、高性能的分布式系统而设计。在Java开发的分布式应用中,Jupiter提供了一系列强大的功能,帮助开发者简化服务治理,提高...

    星尘,轻量级分布式服务框架。配置中心、集群管理、远程自动发布、服务治理。服务自动注册和发现,负-Stardust.zip

    《星尘:轻量级分布式服务框架解析》 在当今的互联网时代,分布式服务框架已经成为企业级应用系统架构的重要组成部分。星尘(Stardust)就是这样一个轻量级的分布式服务框架,它提供了全面的解决方案,包括配置中心...

    Hibatis轻量级高并发分布式数据库框架

    Hibatis是一个在Java开发中广泛使用的轻量级、高并发和分布式数据库访问框架,它融合了Ibatis和JPA(Java Persistence API)的优点,旨在提供高效且灵活的数据持久化解决方案。作为ORM(Object-Relational Mapping)...

    轻量的分布式服务框架Skynet.pdf

    Skynet是一个轻量级的分布式服务框架,由Brian Ketelsen于2011年6月基于Go语言创建。设计之初,Skynet的主要目标是为大规模分布式应用提供服务通信的基础设施。作为一个分布式的解决方案,Skynet能够有效地管理和...

    基于.NET Core开发的轻量级分布式配置中心.zip

    总的来说,“基于.NET Core开发的轻量级分布式配置中心”是一个实用的解决方案,结合.NET Core的先进特性和分布式系统的需求,提供了高效、可靠的配置管理服务。通过研究和实践这个项目,开发者可以深入了解如何构建...

    XXL-REGISTRY是一个轻量级分布式服务注册中心

    总之,XXL-REGISTRY作为一款轻量级的分布式服务注册中心,不仅满足了现代微服务架构对于服务治理的基本需求,而且通过其强大的特性,为开发者和运维人员提供了更加便捷、灵活的工具,助力企业构建高效、稳定的分布式...

    一个轻量级分布式机器学习系统的设计与实现.pdf

    本文介绍了一个轻量级分布式机器学习系统的架构设计与实现细节,旨在实现高性能、高可扩展性与稳定性,同时满足低耦合和低资源消耗的需求。 分布式机器学习系统通常面临以下几个技术挑战: 1. 模块化设计:为了...

    Dubbo分布式服务框架入门2

    Dubbo是中国阿里巴巴开源的一款高性能、轻量级的Java分布式服务框架,它主要为了解决企业应用之间的服务调用问题,提供了服务注册、服务发现、负载均衡、容错处理等一系列完整的服务治理功能。在这个"Dubbo分布式...

    springboot+dubbo+zookeeper构建的分布式调用服务框架

    Dubbo 是阿里巴巴开源的一个高性能、轻量级的Java RPC框架,它提供了服务注册与发现、负载均衡、容错、监控等能力,旨在提高服务之间的通信效率和稳定性。Dubbo 支持多种协议,如Dubbo、HTTP、Hessian等,并且可以...

    Dubbo+Zookeeper+SpringMVC实现分布式服务治理框架(附件含源码).zip

    1. **Dubbo**: Dubbo是阿里巴巴开源的一款高性能、轻量级的服务治理框架,它致力于提供面向接口的远程调用能力,具有服务注册、服务发现、负载均衡、容错、监控等核心功能。Dubbo支持多种协议,如RPC(Remote ...

    轻量级Java客户端分布式服务的模块化工作流引擎方法.pdf

    摘要:本文介绍了一种轻量级Java客户端分布式服务的模块化工作流引擎方法,旨在解决在没有管理权限或特权端口的客户端上运行和组成工作流的问题。此方法设计了一个客户端-服务器框架,使得只需Java运行环境和构成...

    管理系统系列--Python3+Huey+Zerorpc+Redis+Flask=RTask 轻量级分布式任务管理系统.zip

    在IT行业中,构建一个轻量级的分布式任务管理系统是一项常见的需求,特别是在大数据处理、实时计算以及后台服务自动化等领域。这个名为"RTask"的系统利用了Python3作为基础开发语言,结合了多个强大的库和工具,如...

    分布式RPC系统框架-Dubbo(2.7)教程(4.31G)

    Dubbo是阿里巴巴开源的一款高性能、轻量级的RPC框架,它极大地简化了服务间的通信,提升了系统的可扩展性。 首先,我们要理解什么是RPC(Remote Procedure Call)。RPC允许一个程序在执行的过程中调用另一个位于...

    forest, 基于netty轻量的高性能分布式RPC服务框架.zip

    森林(forest)是一个基于Netty构建的轻量级、高性能的分布式RPC服务框架。这个框架的设计目标是简化RPC调用,提高服务之间的通信效率,并且提供了丰富的功能来应对分布式环境中的各种挑战。让我们深入探讨一下forest...

    分布式服务框架 分布式系统概念与设计 原书第5版 分布式服务框架原理与实践_李林锋著

    7. 容器化与编排:Docker提供轻量级的容器化技术,Kubernetes作为容器编排系统,使得分布式服务更容易管理和扩展。 8. 监控与日志:Prometheus、Grafana、ELK Stack(Elasticsearch、Logstash、Kibana)等工具用于...

Global site tag (gtag.js) - Google Analytics