Fork me on GitHub
摘要: 使用集群,比如zk来控制注册中心,当一个服务有多个请求地址的时候,会返回多个地址。 那么就需要负载均衡来控制我们要请求哪台机器来得到请求。 方案一:随机 传入key值和key所包含的ip地址值,该地址值存入TreeSet中(有序存储) 获得TreeSet的长度,然后随机得到其索引,挑出随机的一个。 阅读全文
posted @ 2020-03-11 19:26 lovejune 阅读(1640) 评论(0) 推荐(0) 编辑
摘要: 使用模板模式,对注册中心进行设计,可以方便后续添加注册中心 模板抽象类,提供注册中心必要的方法。 public abstract class ServiceRegistry { //这是一个模板的抽象类,规定了注册中心对外提供的方法 //开始注册服务,参数map中应该包含注册中心要启动所需的参数 p 阅读全文
posted @ 2020-03-11 19:24 lovejune 阅读(1280) 评论(0) 推荐(0) 编辑
摘要: 手写一个高性能的rpc框架 模拟服务端,运行main函数,相当于启动服务器 public class ServerApplication { public static void main(String[] args) throws Exception { //开启服务端,然后等待客户端发出请求,然 阅读全文
posted @ 2020-03-11 19:23 lovejune 阅读(1580) 评论(0) 推荐(0) 编辑
摘要: 要完成一个高可用、高性能的RPC框架,需要对其架构的设计进行梳理,这里参考xxl-rpc框架,对整个项目进行梳理。 以上就是项目的整个构架,分为四个部分; 第一个是服务发布与引入,基于JDK动态代理以及Spring实现;包括invoker和provider。 第二个部分是服务注册,基于zookeep 阅读全文
posted @ 2020-03-11 19:19 lovejune 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 恢复内容开始 Netty概述 netty是JBoss提供的开源网络编程框架,提供异步的、基于事件驱动的网络应用程序框架和工具。 架构 使用了典型的三层网络架构,Reactor 通信调度层 -> 职责链 PipeLine -> 业务逻辑处理层 Reactor层主要监听网络的读写和连接操作,负责将网络层 阅读全文
posted @ 2020-03-11 19:18 lovejune 阅读(368) 评论(0) 推荐(0) 编辑