#770 GitHub RPC 相关项目

2022-04-26

C++

  1. protocolbuffers/protobuf shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    Protocol Buffers - Google's data interchange format
  2. aria2/aria2 shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.
  3. google/flatbuffers shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    FlatBuffers: Memory Efficient Serialization Library
  4. apache/incubator-brpc shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Industrial-grade RPC framework used throughout Baidu, with 1,000,000+ instances and thousands kinds of services. "brpc" means "better RPC".
  5. RPCS3/rpcs3 shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    PS3 emulator/debugger
  6. TarsCloud/Tars shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Tars is a high-performance RPC framework based on name service and Tars protocol, also integrated administration platform, and implemented hosting-service via flexible schedule.
  7. capnproto/capnproto shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    Cap'n Proto serialization/RPC system - core tools and C++ library
  8. idealvin/cocoyaxi shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    A go-style coroutine library in C++11 and more.
  9. baidu/sofa-pbrpc shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    A light-weight RPC implement of google protobuf RPC framework.
  10. zeroc-ice/ice shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.
  11. Tencent/phxrpc shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    A simple C++ based RPC framework.
  12. FISCO-BCOS/FISCO-BCOS shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    FISCO BCOS 是由微众牵头的金链盟主导研发、对外开源、安全可控的企业级金融区块链底层技术平台。 单链配置下,性能 TPS 可达万级。提供群组架构、并行计算、分布式存储、可插拔的共识机制、隐私保护算法、支持全链路国密算法等诸多特性。 经过多个机构、多个应用,长时间在生产环境中的实践检验,具备金融级的高性能、高可用性及高安全性。FISCO BCOS is a secure and reliable financial-grade open-source blockchain platform. The platform provides rich features including group architecture, cross-chain communication protocols, pluggable consensus mechanisms, privacy protection algorithms, OSCCA-approved (Office of State Commercial Cryptography Administration) cryptography algorithms, and distributed storage. Its performance, usability, and security have been testified by many institutional users and successful business applications in a live production environment.
  13. rpclib/rpclib shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    rpclib is a modern C++ msgpack-RPC server and client library
  14. sogou/srpc shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    High performance, low latency, lightweight enterprise-level RPC system. Supports Baidu bRPC, Tencent tRPC, thrift protocols.

Go

  1. asim/go-micro shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    A Go microservices framework
  2. chai2010/advanced-go-programming-book shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    :books: 《Go 语言高级编程》开源图书,涵盖 CGO、Go 汇编语言、RPC 实现、Protobuf 插件实现、Web 框架实现、分布式系统等高阶主题(完稿)
  3. zeromicro/go-zero shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    A web and RPC framework written in Go. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.
  4. grpc/grpc-go shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    The Go language implementation of gRPC. HTTP/2 based RPC
  5. geektutu/7days-golang shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    7 days golang programs from scratch (web framework Gee, distributed cache GeeCache, object relational mapping ORM framework GeeORM, rpc framework GeeRPC etc) 7 天用 Go 动手写/从零实现系列
  6. smallnest/rpcx shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily. Try it. Test it. If you feel it's better, use it! 𝐉𝐚𝐯𝐚 有 𝐝𝐮𝐛𝐛𝐨, 𝐆𝐨𝐥𝐚𝐧𝐠 有 𝐫𝐩𝐜𝐱! build for clound!
  7. roadrunner-server/roadrunner shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    🤯 High-performance PHP application server, load-balancer and process manager written in Golang
  8. twitchtv/twirp shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    A simple RPC framework with protobuf service definitions
  9. cloudwego/kitex shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    A high-performance and strong-extensibility Golang RPC framework that helps developers build microservices.
  10. davyxu/cellnet shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    High performance, simple, extensible golang open source network library
  11. hashicorp/go-plugin shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Golang plugin system over RPC.
  12. TarsCloud/TarsGo shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    A high performance microservice framework in golang. A linux foundation project.

Java

  1. doocs/advanced-java shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识
  2. apache/dubbo shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Apache Dubbo is a high-performance, java based, open source RPC framework.
  3. redisson/redisson shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
  4. dianping/cat shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC 框架,RPC 框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
  5. grpc/grpc-java shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    The Java gRPC implementation. HTTP/2 based RPC
  6. nathanmarz/storm shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Distributed and fault-tolerant realtime computation: stream processing, continuous computation, distributed RPC, and more
  7. weibocom/motan shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    A cross-language remote procedure call(RPC) framework for rapid development of high performance distributed services.
  8. line/armeria shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
  9. sofastack/sofa-rpc shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    SOFARPC is a high-performance, high-extensibility, production-level Java RPC framework.

Python

  1. crossbario/autobahn-python shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    WebSocket and WAMP in Python for Twisted and asyncio
  2. quantmind/pulsar shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Event driven concurrent framework for Python
  3. lgandx/PCredz shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    This tool extracts Credit card numbers, NTLM(DCE-RPC, HTTP, SQL, LDAP, etc), Kerberos (AS-REQ Pre-Auth etype 23), HTTP Basic, SNMP, POP, SMTP, FTP, IMAP, etc from a pcap file or from a live interface.
  4. Thriftpy/thriftpy shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Thriftpy has been deprecated, please migrate to https://github.com/Thriftpy/thriftpy2
  5. tomerfiliba-org/rpyc shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    RPyC (Remote Python Call) - A transparent and symmetric RPC library for python
  6. samuelcolvin/arq shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Fast job queuing and RPC in python with asyncio and redis.
  7. arskom/spyne shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    A transport agnostic sync/async RPC library that focuses on exposing services with a well-defined API using popular protocols.
  8. jgarzik/python-bitcoinrpc shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Python interface to bitcoin's JSON-RPC API
  9. Pyrlang/Pyrlang shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Erlang node implemented in Python 3.5+ (Asyncio-based)
  10. Thriftpy/thriftpy2 shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Pure python approach of Apache Thrift.
  11. kevinhwang91/rnvimr shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Make Ranger running in a floating window to communicate with Neovim via RPC
  12. hakril/PythonForWindows shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    A codebase aimed to make interaction with Windows and native execution easier
  13. joshmarshall/jsonrpclib shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    A Python JSON-RPC over HTTP that mirrors xmlrpclib syntax.
  14. CiscoDevNet/yang-explorer shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    An open-source Yang Browser and RPC Builder Application
  15. phunt/avro-rpc-quickstart shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Apache Avro RPC Quick Start.
  16. pavlov99/json-rpc shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    🔁 JSON-RPC 1/2 transport implementation. Supports python 2/3 and pypy.
  17. progrium/duplex shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Full duplex modern RPC
  18. maxcutler/python-wordpress-xmlrpc shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Python library for WordPress XML-RPC integration
  19. studio-ousia/mprpc shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w
    A fast Python RPC library
  20. Ananto30/zero shields.io:github/stars shields.io:github/languages/code-size shields.io:github/commit-activity/w shields.io:github/license
    Zero: A simple, fast, high performance and low latency Python framework (RPC + PubSub) for building microservices or distributed servers

#769 墨菲安全 CLI

2022-04-25

OSCHINA 上听说墨菲安全, 是一个 Golang 写的 cli 工具, 收集项目的依赖信息提交到服务器端, 查询可能的安全风险。
根据官方文档,目前支持 Java(maven,gradle),Golang(go mod),Node(npm,yarn),Python(pip)语言。

本文档就是简单的试用一下。

总结:我感觉挺好的,一般来说对于依赖我们都不上心,其实是有很大安全风险在里面。我觉得应该对线上业务的依赖都应该有严格的审查。
如果是安全方面的需求没有那么强烈,用这个工具可以为依赖的管理提供一些帮助。
可以考虑和 CI/CD 继承,如果有安全风险就发出告警信息。

#768 给新人的目标

2022-04-19

一些阶段性目标:

  1. 参照网上查到的博客和文档,先列出大纲以及制定学习计划
    大概以下五个主题的内容:

  2. Python 标准库

  3. Tornado
  4. Redis
  5. RabbitMQ (pika)
  6. MySQL (SQLAlchemy/pymysql)

  7. 如果资源方面允许,可以实现一个内部系统开发,进行编码和设计方面的指导

  8. 阅读项目文档,理解邮件和短信的处理流程,项目结构,以及每个项目的核心逻辑
  9. 给定一个周边项目进行开发维护,小任务开发(Code Review)
  10. 从写文档和单元测试开始,逐渐参与核心项目的开发和维护

其他:Linux 基础,Git,我们的开发流程和规范

标准库

  1. 常用基础库: os, sys, shutil, re, time, datetime, ramdom, json, pickle ...
  2. 日志: logging
  3. HTTP 相关: urllib, http
  4. 邮件相关: email, smtplib, smtpd
  5. 编码和加密相关: md5, sha, base64, hmac, binascii
  6. 单元测试: unitest 非常重要

Tornado

  1. Web 框架先走起来
  2. 基本用法,比如 add_timeout, call_later, add_callback ...
  3. 了解 IOLoop/IOStream
  4. 项目开发过程中的一些实践

Redis

  1. 安装
  2. redis-cli
  3. 数据类型
  4. 命令清单
  5. redis

RabbitMQ

  1. 基本概念 (Exchange / Queue / Binding / Channel / Connection)
  2. 安装和使用
  3. pika
  4. 发布/订阅 (生产, 消费)

MySQL

  1. 数据类型
  2. 连接
  3. 索引
  4. pymysql / mysqlclient
  5. SQLAlchemy

#767 小朋友的数学加强计划

2022-04-18

一些简单的算术(十以内的加减法)要掰着手指算半天,还总算错,我觉得是训练少了。

目标:能够不假思索地说出答案。
工具:Excel 生成题目,打印到 A4 纸

第一步:数数训练

  1. 从 1 数到 100
  2. 从 100 倒数到 1
  3. 指定两个数字比大小
  4. 10 以内
  5. 20 以内
  6. 100 以内
  7. 从指定数字往后数指定位
  8. 从指定数字往前数指定位

第二步:十以内加法训练

  1. 5 以内的加法,应该没有问题,确认一下。
  2. 大数 6 ~ 9 + 小数 0 ~ 5
  3. 大数 6 ~ 9 + 大数 6 ~ 9
  4. 十以内的加法综合训练

第三步:十以内的减法训练

  1. 5 以内的减法,应该没有问题,确认一下。
  2. 十以内的减法综合训练

第四步:加法

  1. 不用进位的加法
  2. 进位加法 11 ~ 19 + 0 ~ 9
  3. 更大数的进位加法(加强)
  4. 100 以内加法综合训练

第四步:减法

  1. 不用借位减法
  2. 借位减法 11 ~ 19 - 0 ~ 9
  3. 更大数的借位减法(加强)
  4. 100 以内减法综合训练

#766 HTTP 协议新提案:Query 方法

2022-04-15

令我惊讶的是,竟然还有人不是为了解决什么痛点问题,而想对一个使用如此广泛的基础协议做改动。
我敢打赌,绝对不可能通过。

https://www.ietf.org/archive/id/draft-ietf-httpbis-safe-method-w-body-02.html

这个新提案的主要理由是 URL 中不能包含太多数据(实现的限制),然后受 URL 编码的影响,效率下降。
作者认为应该设计一个支持 Body 的 GET 方法,那就是 Query。

提案讨论了相关的缓存问题。要求将 URL 和 Body 合并成 Key。

可以在这里跟踪相关进展:

#765 办公网络中的安全问题

2022-04-14

同事发来消息,说是我的电脑经过安全扫描,判断有风险。提了以下几条改进意见:

  1. SMB 共享,风险高,希望限制访问,并强制执行消息签名。
    改进:其实现在我很少使用 SMB 共享了,直接关闭了事。
    PS: 其实在用 SMB 共享,所以重新开启 smbd 并禁止匿名访问。

  2. 开启了 IP 转发,风险中,建议关闭。
    IP 转发功能对我的工作是非常必要的,不能关闭
    之前的文章, 2021/05/09, VPN 与 NAT 有讲过这个问题。
    改进:调整 iptables 规则,only ACCEPT 指定链路 FORWARD

  3. 3Proxy HTTP 代理(端口 10809)只做透明请求远程溢出,风险高,建议升级 3Proxy 版本。
    我没有安装什么 3Proxy, 这个端口是其他 HTTP 代理服务的端口(不排除底层使用了 3Proxy)
    改进:我直接将其改成监听 127.0.0.1 了事

#764 数据序列化格式

2022-04-14

文本类型

最常见的文本类型数据序列化格式要数 JSON 和 XML 了。

早年间,知名的 RPC 规范 SOAP,XML-RPC 就是定义在 XML 的基础之上。
后来,随着 Web 的流行,JSON 使用得越来越多,基于 JSON 的 RPC 也开始出现。
但是最后 RPC 整体衰弱下来,终究没有抵过 HTTP API 的趋势。大部分 HTTP API 都是基于 JSON,少部分基于 XML。

苹果公司的 plist (Property list) 格式也是基于 XML。

除了 JSON 和 XML 之外,其他常见的文本类型数据序列化格式还有:CSV,YAML。

二进制类型

  1. ASN.1 参考 2020/01/31, ASN.1

  2. D-BUS

  3. 三种语言相关的序列化格式:

  4. Java Object Serialization

  5. Python Pickle
  6. PHP serialization format

  7. Mongo 引入的 BSON,二进制 JSON。类似的格式(JSON 二进制化)还有:

  8. Binn

  9. CBOR (rfc8949)
  10. Amazon Ion
  11. msgpack
  12. Smile
  13. ubjson。

  14. 也有一些 XML 二进制化的格式(Binary XML),比如:

  15. W3C 推荐的 Efficient XML Interchange (EXI)

  16. ISO 标准 Fast Infoset。

  17. Apache 基金会的 Avro 和 Parquet。

  18. 近些年,随着微服务的流行,RPC 重新席卷而来。一般都是采用二进制的数据格式。
    二进制的编码效率更高,可视化(转换成文本)的问题可以通过网关来提供。

Google 公司的 Protocol Buffers (protobuf) 和 FlatBuffers
Apache Thrift 也有自己独创的序列化格式(同名)。

#763 如何面试程序员

2022-04-13

之前写的关于面试的文章都是站在求职者的角度,今天这一篇是站在招聘者的角度。工作一些年之后,总是会偶尔参与到公司的招聘流程中。在做面试官之后,应该如何来考察一个开发者的工作能力呢?

#762 Golang GC 与 STW [编辑中]

2022-04-11

相信 Golang 开发者可能前段时间见过两位大佬关于 Golang 性能的技术讨论(撕X),其中一个很重要的点就是涉及 Golang GC 对性能的影响。

我之前的开发经验几乎全部集中于 PHP,JS,Python 等脚本型语言,较少需要涉及 GC(只有几次涉及服务内存占用的时候检查过 GC)。
接触到 Golang 之后,如果不去研究 GC 可能很多疑问是无法解决的,很多时候的优化也和 GC 密切相关。