什么是RPC框架? RPC就是远程调用过程,实现各个服务间的通信,像调用本地服务一样. RPC有什么优点? - 提高服务的拓展性,解耦.- 开发人员可以针对模块开发,互不影响.- 提升系统的可维护性及高可用等. 基于socket思考: - 怎么建立网络通信? - 服务端怎么暴露服务并处理客户端请求? - 客户端怎么去拿到服务并调用? 基于socket的通信的展示图: 流程 1---->2---->3---->4 上面的图形根据自己的理解画的--有些不足,但理解就行. 创建父工程order…
一.前言 前段时间看到一篇不错的文章<看了这篇你就会手写RPC框架了>,于是便来了兴趣对着实现了一遍,后面觉得还有很多优化的地方便对其进行了改进. 主要改动点如下: 除了Java序列化协议,增加了protobuf和kryo序列化协议,配置即用. 增加多种负载均衡算法(随机.轮询.加权轮询.平滑加权轮询),配置即用. 客户端增加本地服务列表缓存,提高性能. 修复高并发情况下,netty导致的内存泄漏问题 由原来的每个请求建立一次连接,改为建立TCP长连接,并多次复用. 服务端增加线程池提高消息处…
Java技术栈 www.javastack.cn 优秀的Java技术公众号 来源:juejin.im/post/5c4481a4f265da613438aec3 之前在 RPC框架底层到底什么原理得知了RPC(远程过程调用)简单来说就是调用远程的服务就像调用本地方法一样,其中用到的知识有序列化和反序列化.动态代理.网络传输.动态加载.反射这些知识点. 发现这些知识都了解一些.所以就想着试试自己实现一个简单的RPC框架,即巩固了基础的知识,也能更加深入的了解RPC原理. 当然一个完整的RPC框架包…
引言 Spring Boot其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 通过这种方式,springboot是一个快速整合第三方框架的,简化了xml的配置,项目中再也不包含web.xml文件了,完全使用注解来完成操作的,并且内部自带tomcat启动.直接使用jar文件运行即可. 好了大概了解了springboot有啥用处,本章节主要目的就是仿造一个springboot整合jsp的小实战.下面开始代码演示了…
这是sproto系列文章的第三篇,可以参考前面的<为sproto添加python绑定>.<为python-sproto添加map支持>. sproto是云风设计的序列化协议,用于高效的打包解包游戏协议数据.有点类似Google推出的protobuf,但是比protobuf要快.结构上有点类似cap'n Proto,但是没有打算直接使用其作为内存组织结构,因此少了数据对齐的部分.目前使用场景主要是在游戏客户端和服务器端的RPC协议上. sproto比较有趣的一点,是可以自描述,用sp…
声明:如tomcat的安装目录为D:\Java\tomcat6,下面要根据tomcat的安装目录而定 1. 建立程序的文件结构 ==>找到tomcat的安装目录,在webapps目录下新建一个名为servlet的目录 ==>在servlet目录下新建名为WEB-INF的目录 ==>在WEB-INF目录下新建一个名为classes的目录 ==>在WEB-INF目录下新建一个名为web.xml的文件 ==>在classes目录下新建一个名为FirstServlet.java的文件…
https://github.com/Snailclimb/jsoncat :仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架 距离上一次给小伙伴们汇报简易版的"Spring Boot"的完成情况已经有半个月了.时间过得是真特么快啊! 01 这半个月里,我的 HTTP 框架已经支持 AOP.拦截器(也是 AOP 的一种).属性文件读取等功能了. 目前的话,整个 HTTP 框架基本已经具备我最初想要实现的全部功能了.也算是兑现了诺言,善始善终了…
目录 1, Springmvc基本原理流程 2,注解开发 编写测试代码: 目录结构: 3,编写自定义DispatcherServlet中的初始化流程: 3.1 加载配置文件 3.2 扫描相关的类,扫描注解 3.3 初始化Bean对象(实现IOC容器,基于注解) 3.4 实现依赖注入: 3.5 构造一个handleMapping处理器映射器 4,测试一下: 完整的pom文件: 5,改造initHandleMapping() 5.1 为什么改造? 5.2 新建Handler类 5.3 修改initH…
学习实现一个简单的RPC框架. 工程主要目录分级结构: rpc-common: 公共基础包,能力提供包 rpc-provider: 服务提供者 rpc-consumer:服务消费者 rpc-service:定义接口 rpc-service-impl:接口实现 核心实现:通过动态代理的方式映射接口实例,然后调用服务提供的方法: rpc-consumer只需要依赖rpc-common 和 rpc-service,底层通过走http的方式去调用Service的接口.当然不一定要走Http才能调用. g…
构建自托管的笔记系统 这两年各种笔记系统快速井喷,好像谁都能来掺一脚,app store随便搜索一个关键字就会有一大堆的结果,从老牌的印象笔记,Bear,MWeb,有道云笔记再到新星专注笔记之类,从买断制到订阅制,从全平台到iOS独占,什么样的都有,如果你是一个相对包容的人,那么大牌的笔记软件就足以满足需求,代价是承受不菲的订阅费用以及陈旧的笔记客户端? 我坚信订阅制对软件开发而言是一件有促进作用的好事,能够督促开发者在软件的生命周期里修复问题,并提供更好的在线服务以及售后帮助,但也不能不承认,…