IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> xxl-rpc源码分析(一)基本介绍 -> 正文阅读

[网络协议]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 (该地址接入方项目将会使用到,作为注册地址),登录后运行界面如下图所示

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:12:37  更:2022-04-26 12:15:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:45:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码