被喷了!聊聊我开源的RPC框架那些事
前段时间利用业余时间写了一个简单的 RPC 框架,花费了不少精力。开源出来之后,少部分不太友好的技术人站在上帝视角说了风凉话。就很难受,兄弟,谁还没有一个玻璃心。
简单吐槽一波,给大家聊聊关于 guide-rpc-framework 的一些事情。
01 我的自定义 RPC 框架近况
关注我的大部分小伙伴应该都知道,3个月前,我利用业余时间手写一个简单的 RPC 框架(玩具),名字叫做 guide-rpc-framework。
目前的话,这个项目已经有 0.5k 的 star。感谢小伙伴们的支持!
写这个 RPC 框架的主要目的是为了个人学习,开源出来的目的主要是想帮助到更多人。
02 开源的魅力
开源出来之后,大部小伙伴都是比较支持的,有很多小伙伴都参与了进来一起完善。
这里点名表扬一下Github用户名为 sakuragi1111 和 smile2coder 这两位老哥。
sakuragi1111 这位老哥通过参考 Dubbo 源码实现了 SPI 机制。
smile2coder 这位老哥为 guide-rpc-framework 添加了通过注解实现服务消费的功能。
目前的话, guide-rpc-framework 已经支持通过注解进行服务消费和注册。
程序世界,什么样的人都有,有人感谢你,也会有人贬低你。
03 不那么好的声音
在我的 guide-rpc-framework 开源之后,也经常会受到像:“你有本事别用现成的框架写一个啊?”、“你这个写的一点亮点都没有,有啥意思?”、“都有了 Dubbo 之后,为啥还要自己写一个?”、“重复造轮子没意义”......之类的不太友善的话语。
说句心里话,一般说出来这种话的人往往技术水平很低。
如果,你指出我哪里写的不好,我很乐意地去修改。但是,你站在上帝视角说着风凉话,那就是人品有问题了。
1.为什么不能利用现成的框架呢?(比如为啥不用 JDK NIO 而用 Netty?)
毫不夸张地说:开源出来的东西,就是全体技术人共同的财富。
Netty 比 NIO 更好用、更完善,我为啥还要直接使用 NIO呢?我们平常经常接触的 Dubbo、RocketMQ、Elasticsearch、gRPC 等等都用到了 Netty 啊。
2.你这个写的一点亮点都没有,有啥意思?
有能耐的话,你也可以自己写一个。说出此类的话的人,往往是有及其嫉妒心理的人。而且,RPC 框架本身就已经有很多比较成熟的例子了比如 Dubbo。说实话,Dubbo 基本是已近把 RPC 框架能考虑到的点都考虑到了。
我不信你一个人,能干过人家一个团队好多年的成果。
3.都有了 Dubbo 之后,为啥还要自己写一个?
一定要学会看 README!!!
我在项目的 README 中明确说明了:写这个 RPC 框架主要是为了通过造轮子的方式来学习,检验自己对于自己所掌握的知识的运用。
4.重复造轮子没意义
我们实际项目开发中是比较忌讳造轮子的,但是,实际学习过程中造轮子绝对是最自己百利而无一害的!
我的 RPC 框架肯定是无法和 Dubbo 这类已经这么成熟的相提并论。但是,在自己去写 RPC 框架的时候,更加加深了自己对于 RPC 框架的认识。实现的过程中,遇到了很多问题,解决问题的过程中也提高了自己的编程能力。总而言之,造轮子是一种特别能够提高自己系统编程能力的手段。
04 拥抱开源
开源绝对是编程领域最美妙的事情之一,大幅提高了我们的生产力。
没事就去开源社区比如 Github 或者 Gitee 逛逛,在这里你可以get到各种好东西。
你可以在 Github 分享很多东西,你的学习笔记、自己做的实战项目、自己造的轮子......(资源类的不太推荐,太容易侵权)。
虽然,现在 Github 被很多人单纯玩成了引流工具。但是,整体来说 Github 整体技术环境和氛围还是很不错的!
另外,最好的话是要给项目弄一个英文版本,项目代码中的注释最好也要是英文的。毕竟是开源,最好是能准守开源精神使用世界通用语言(这一点我自己也没做好,反思!)。
如果你想让自己的开源项目被更多人知道的话,你可以在下面技术平台宣传(不宣传的话,开源的东西很难被别人知道,不要让好东西被埋没):
如果有帮助的话,不要吝啬你们手中的在看和赞!“怼”起来!
以上 4 本优质原创 PDF 微信搜“JavaGuide”后台回复“面试突击”即可免费领取。
被喷了!聊聊我开源的RPC框架那些事的更多相关文章
- 2.Dubbo开源分布式服务框架(JAVA RPC)
1. Dubbo介绍 Dubbox是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能RPC(即远程调用)实现服务的输出和输入功能, 可以和Spring框架无集成.Dubbo是一款高性能 ...
- 微服务,开源 RPC 框架 - Spring Cloud
Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言 Spring Cloud 利用 Spring Boot 特性整合了开源行业中优秀的组 ...
- 字节开源RPC框架Kitex的日志库klog源码解读
前言 这篇文章将着重于分析字节跳动开源的RPC框架Kitex的日志库klog的源码,通过对比Go原生日志库log的实现,探究其作出的改进. 为了平滑学习曲线,我写下了这篇分析Go原生log库的文章,希 ...
- 6种微服务RPC框架,你知道几个?
开源 RPC 框架有哪些呢? 一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的. 跟语言平台绑定的开源 RPC 框架主要有下面几种. Dubbo:国内最早开源的 RPC 框架,由阿里巴 ...
- 6 种微服务 RPC 框架,你知道几个?
开源 RPC 框架有哪些呢? 一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的. 跟语言平台绑定的开源 RPC 框架主要有下面几种. Dubbo:国内最早开源的 RPC 框架,由阿里巴 ...
- Dobbo的继任者?试用微博RPC框架Motan
从14年开始就陆续看到新浪微博RPC框架Motan的介绍,时隔两年后,微博团队终于宣布开源轻量级RPC框架Motan,项目地址: https://github.com/weibocom/motan/ ...
- abelkhan中的rpc框架
rpc简介:http://www.ibm.com/developerworks/cn/aix/library/au-rpc_programming/index.html 常见的rpc框架有protob ...
- 服务化实战之 dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型
转自: http://blog.csdn.net/liubenlong007/article/details/54692241 概述 前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺 ...
- FW:主流RPC框架
主流RPC框架 2015年10月27日 zman RPC 介绍目前在互联网公司比较流行的开源的RPC框架. RPC框架比较 语言 协议 服务治理 社区 机构 Hessian 多语言 he ...
随机推荐
- Ubuntu 18.04 安装配置 java jdk
1.下载 下载 jdk 到 Downloands 文件夹下 cd 进入 /usr/local, 创建 jdk 文件夹, 然后 cd 进这个文件夹 cd /usr/local sudo mkdir jd ...
- Linux环境下安装MySQL数据库
Linux安装mysql服务分两种安装方法: (1).源码安装,优点是安装包比较小,只有十多M,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: (2).使用官方编译好的二进制文件安装,优 ...
- 7. Jackson用树模型处理JSON是必备技能,不信你看
每棵大树,都曾只是一粒种子.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BA ...
- 一篇文章高效定位iframe
今天跟大家分享的是如何高效的定位iframe.我们来看一段最早的代码: # coding: utf-8from selenium import webdriverfrom time import sl ...
- 我们真的需要JWT吗?
JWT(JSON Web Token)是目前最流行的认证方案之一.博客园.各种技术公众号隔三差五就会推一篇JWT相关的文章,真的多如牛毛.但我对JWT有点困惑,今天写出来跟大家探讨探讨,不要喷哈. J ...
- 使用BeetleX在Linux下部署.NET多站点服务
在windows下常用IIS来部署.NET的多站点服务,但在Linux下就没这么方便了:虽然可以使用一些代理服务器如nginx,jexus等来反代或部署应用,但nginx对.NET应用的 ...
- Linux文件描述符与重定向
文件描述符可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 当Linux启动的时候会默认打开三个文件描述符,分别是: 标 ...
- JS中写继承的方式
有父子两个函数,代表两个类: var parent = function(){} var child = function(){} 一.直接继承 child.prototype = new paren ...
- Mybatis联合查询(一)
Mybatis的简单联合查询操作: 实体类: Employee: package com.test.mybatis; public class Employee { private Integer i ...
- css实例——“旋转”太极八卦图
话不多说,直接上代码: HTML代码部分: <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...