xxl-rpc源码分析(一)基本介绍

一、简介

1.1 概述

XXL-RPC 是一个分布式服务框架,提供稳定高性能的RPC远程服务调用功能。拥有"高性能、分布式、注册中心、负载均衡、服务治理"等特性。现已开放源代码,开箱即用。

1.2 特性

  • 1、快速接入:接入步骤非常简洁,两分钟即可上手;
  • 2、服务透明:系统完整的封装了底层通信细节,开发时调用远程服务就像调用本地服务,在提供远程调用能力时不损失本地调用的语义简洁性;
  • 3、多调用方案:支持 SYNC、ONEWAY、FUTURE、CALLBACK 等方案;
  • 4、多通讯方案:支持 TCP 和 HTTP 两种通讯方式进行服务调用;
  • 5、多序列化方案:支持 HESSIAN、HESSIAN1 等方案;
  • 6、负载均衡/软负载:提供丰富的负载均衡策略,包括:轮询、随机、LRU、LFU、一致性HASH等;
  • 7、注册中心:可选组件,支持服务注册并动态发现(内置“轻量级注册中心 / 服务管心”(推荐)、“Local注册中心”等);可选择不启用,直接指定服务提供方机器地址通讯;
  • 8、服务治理:提供服务治理中心,可在线管理注册的服务信息,如服务锁定、禁用等;
  • 9、服务监控:可在线监控服务调用统计信息以及服务健康状况等(计划中);
  • 10、容错:服务提供方集群注册时,某个服务节点不可用时将会自动摘除,同时消费方将会移除失效节点将流量分发到其余节点,提高系统容错能力。
  • 11、解决1+1问题:传统分布式通讯一般通过nginx或f5做集群服务的流量负载均衡,每次请求在到达目标服务机器之前都需要经过负载均衡机器,即1+1,这将会把流量放大一倍。而XXL-RPC将会从消费方直达服务提供方,每次请求直达目标机器,从而可以避免上述问题;
  • 12、高兼容性:得益于优良的兼容性与模块化设计,不限制外部框架;除 spring/springboot 环境之外,理论上支持运行在任何Java代码中,甚至main方法直接启动运行;
  • 13、泛化调用:服务调用方不依赖服务方提供的API;

1.3 背景

RPC(Remote Procedure Call Protocol,远程过程调用),调用远程服务就像调用本地服务,在提供远程调用能力时不损失本地调用的语义简洁性;

一般公司,尤其是大型互联网公司内部系统由上千上万个服务组成,不同的服务部署在不同机器,跑在不同的JVM上,此时需要解决两个问题:

  • 1、如果我需要依赖别人的服务,但是别人的服务在远程机器上,我该如何调用?
  • 2、如果其他团队需要使用我的服务,我该怎样发布自己的服务供他人调用?

“XXL-RPC”可以高效的解决这个问题:

  • 1、如何调用:只需要知晓远程服务的stub和地址,即可方便的调用远程服务,同时调用透明化,就像调用本地服务一样简单;
  • 2、如何发布:只需要提供自己服务的stub和地址,别人即可方便的调用我的服务,在开启注册中心的情况下服务动态发现,只需要提供服务的stub即可;

1.4 下载

文档地址

源码仓库地址

二、快速入门( springboot版本 + 轻量级注册中心 )

2.1 准备工作

下载源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:

源码目录介绍:
- /doc
- /xxl-rpc-admin    :轻量级服务(注册)中心,可选模块;
- /xxl-rpc-core     :核心依赖;
- /xxl-rpc-samples  :示例项目;
    - /xxl-rpc-sample-frameless     :无框架版本示例;
    - /xxl-rpc-sample-springboot    :springboot版本示例;
        - /xxl-rpc-sample-springboot-api           :公共API接口
        - /xxl-rpc-sample-springboot-client        :服务消费方 invoker 调用示例;
        - /xxl-rpc-sample-springboot-server        :服务提供方 provider 示例;

2.2 搭建部署 "服务(注册)中心"

推荐使用 "xxl-rpc-admin" 作为轻量级服务(注册)中心。非常轻量级,一分钟可完成部署工作。 注册中心为可选模块,可以不使用注册中心,也可以选型其他注册中心。

2.2.1 初始化“服务(注册)中心数据库”

请下载项目源码并解压,获取 "调度数据库初始化SQL脚本" 并执行即可。数据库初始化SQL脚本"位置为:

/xxl-rpc/doc/db/tables_xxl_rpc.sql

服务(注册)中心支持集群部署,集群情况下各节点务必连接同一个mysql实例;如果mysql做主从,集群节点务必强制走主库;

2.2.2 配置部署“服务(注册)中心”

服务(注册)中心项目:xxl-rpc-admin
作用:一个轻量级分布式服务(注册)中心,拥有"轻量级、秒级注册上线、多环境、跨语言、跨机房"等特性。现已开放源代码,开箱即用。

步骤一:配置项目:

配置文件地址:

/xxl-rpc/xxl-rpc-admin/src/main/resources/application.properties

配置内容说明:

### 数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_rpc?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai

### 服务注册数据磁盘同步目录
xxl.rpc.registry.data.filepath=/data/applogs/xxl-rpc/registrydata
### xxl-rpc, access token
xxl.rpc.registry.accessToken=

### 登陆信息配置
xxl.rpc.registry.login.username=admin
xxl.rpc.registry.login.password=123456

步骤二:部署项目:

如果已经正确进行上述配置,可将项目编译打包部署。 访问地址:http://localhost:8080/xxl-rpc-admin (该地址接入方项目将会使用到,作为注册地址),登录后运行界面如下图所示

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值