#Rpc

Open-source projects categorized as Rpc | Edit details

Top 23 Rpc Open-Source Projects

  • GitHub repo advanced-java

    😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识

    Project mention: Top 10 Developer Trends, Mon Oct 12 2020 | dev.to | 2020-10-12

    doocs / advanced-java

  • GitHub repo Protobuf

    Protocol Buffers - Google's data interchange format

    Project mention: Getting started with Protobuffer and Python | reddit.com/r/Python | 2021-05-14

    This post describes how Proto Buffers can be used in Python for passing messages across networks. Protocol Buffers or Porobuf in short, are used for data serialization and deserialization. It also briefly discusses data serialization and serialization in the beginning.

  • GitHub repo aria2

    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.

    Project mention: Rescue Mission for Sci-Hub | news.ycombinator.com | 2021-05-17

    *For people who want to automate their seeding or for those who want to seed on headless servers:*

    Download [aria2](https://github.com/aria2/aria2):

        sudo apt install aria2

  • GitHub repo FlatBuffers

    FlatBuffers: Memory Efficient Serialization Library

    Project mention: grpc_bench: open-source, objective gRPC benchmark | reddit.com/r/cpp | 2021-04-20

    This really makes me want to try https://github.com/continental/ecal with https://github.com/google/flatbuffers to see how they compare. I also know that gpc for cpp at least stops functioning by about 4 MB of request size. Which I find stupid. What if I want to send uncompressed bitmaps!

  • GitHub repo go-micro

    Go Micro is a framework for distributed systems development

    Project mention: Why and how we built Distributed with Next.js and Micro | dev.to | 2021-03-26

    Distributed is a live social chat app built as a Jamstack demo using Next.js and Micro. We built it to demonstrate the value proposition of M3O - a cloud platform for API development. This post explains what went into building Distributed in just a few weeks and how M3O helped rapidly build our MVP. You can find the source code for distributed on Github. If you want to build and host your own version signup to M3O and start running the same services from our open source repository micro/services. Why we built Distributed Distributed was built as a jamstack demo to show how you could leverage M3O as an API backend for rapid MVP development. M3O itself is a cloud platform for API development, built on the popular open source project Micro. Micro enables you to quickly build APIs in Go on the backend and M3O provides simple free hosting of those services. We wanted to show the Jamstack audience how you could quickly leverage those APIs to build something on the frontend. Not only that, we really wanted to understand and experience the frontend developers perspective through dogfooding of our own APIs rather than just throwing stuff over the wall and hoping it works. Hopefully in that we we've done is demonstrate the value of our platform and how others can also make use of it with a real world app like Distributed to learn from. Let's talk more about Jamstack now. Jamstack Development Jamstack is a new architecture pattern for frontend which offloads dynamic aspects of the stack to javascript and third party APIs. Vercel, the makers of Next.js and related companies are pioneering the way forward for jamstack development. Credit jamstack.org JAMstack stands for Javascript, API and Markup. The static part of the application is deployed to a CDN with javascript dynamically loading various pieces of dynamic content from backend APIs and rendering it. Why we chose Next.js Next.js is a massively popular react based framework for Jamstack development. When we were looking at building out a demo on top of M3O we had the choice of going down a number of routes but what really appealed to us was the how deliberate a lot of the choices were in how the Vercel team had constructed the Next.js framework. Being framework creators ourselves with the dominant framework Go Micro for Go, we could appreciate the efforts required and strong opinions needed to drive such adoption and success. Vercel has done a phenomenal job in this way. Beyond praising Vercel's efforts. The Next.js framework includes a lot of key components needed for the Jamstack including server side rendering, api routes and typescript support. For us these were mandatory feature requirements when building against not only our APIs but third party providers. Micro for the Backend Micro is an open source cloud platform for API development. With modern day complexity in writing software for the cloud, Micro has attempted to distill that down to a handful of primitives and a framework for building services in Go. Micro took learnings from the original Go Micro framework and focused on not just gRPC based service development but actually packaging together a runtime and platform which exposes those services automatically as APIs. What this means is we can write microservices on the backend using gRPC and protobuf and immediately provide value to consumers and clients on the frontend via HTTP/JSON. To learn more about that check out the project at micro.mu or the hosted platform at m3o.com. Building on Netlify We initially chose Netlify for hosting as we saw many people adopting it for Jamstack apps. Initially this proved really great for static content. As our apps got more complex and we started to build out the Distributed demo we found Netlify no longer scaled with our basic needs. The first example we can share is Netlify Functions for Next.js API routes. Next.js routes can be turned into Netlify Functions which are essentially hosted as AWS Lambda functions. It's a clever way of pushing certain requirements to the server side, like calling third party APIs with keys you don't want to expose to the client. Next.js is great in this regard and plugins like netlify-plugin-nextjs and next-on-netlify let us do this really quickly but the performance left a lot to be desired. Our APIs are primarily hosted in London on DigitalOcean and while Netlify has a CDN for static content, the Lambda functions are deployed in a single region in US-East on AWS. For those who've suffered this pain you know exactly what that means. We were making cross atlantic calls from JS in the client to api routes on lambda and then finally to our apis. Needless to say this didn't scale for us. We weren't able to reach out the Netlify team to get help and so in frustration had to go down the self hosted route. Note we did test out Vercel and found the experience to be faster but self hosting on DigitalOcean just made more sense for our demo needs. Switching to Self Hosted One of the things DigitalOcean now provides is App Platform, a container hosting solution which lets you pick regions, does TLS certificate management for your custom domain and automatic builds from Git. This turned out to be a perfect solution for self hosted Next.js apps. Next.js at the end of the day is a React and node.js based application. As much as you may want to separate out the static content to something like Netlify and functions on Lambda, it equally just makes sense to host the entire thing in one place and run many copies of it much like we did in the old php and rails days. Because the APIs are colocated with the frontend we find this experience fairly fast, sub 100ms for all the API calls but we know it's not an ideal demonstration of the Jamstack's architecture and so we'll be working towards hosting on Vercel in the future to showcase that experience. How It All Fits Together We're running Distributed as a Next.js application on the frontend talking to Micro APIs on the backend. All of this is constructed as API routes in Next.JS firing requests at our M3O platform and the various APIs we need. Let's walk through a typical request. For example, when loading a group we need to get the group info, user profile, chats and more. We could do this as a GraphQL APIbut that would require too much stitching together in terms of the schema on the backend. Instead we're using protobuf and RPC for rapid development there and Micro automagically exposes that as a HTTP/JSON API. So a typical flow is like so. Frontend makes a request to /api/groups/[id] which loads the api code in the Next.js app We validate the user is logged in by calling the /users/Validate endpoint and ff authenticated load the group data by id using /groups/Read Skipping ahead, we'll load group messages via /threads/ListConversations and private messages using /chats/ListMessages We can check for already read messages via a "seen" API and then subscribe to the streams API for instant messaging Finally we render everything based on the content loaded for the user .gist-data { max-height: 600px; overflow: auto;} Here's a code "snippet" for those interested. From an MVP standpoint this is just a very quick and rapid way for us to build against numerous separate APIs on the backend all hosted in the same place. For anyone interested in the "call" function. It's simply a small function we're using to call the Micro APIs on the backend. Remember Micro turns any RPC based service into a HTTP/JSON API automatically via an API gateway. M3O provides hosting for all this. Performance & Productivity Aside from the structural benefits of a framework like Next.js we find it really unlocks significant productivity by providing an opinionated approach to frontend development. That coupled with Micro on the backend and our APIs hosted on M3O it's enabled us to rapidly ship this MVP within the space of 4-6 weeks with mostly 1 person doing the work. That really speaks to the power of the combination of Next.js and Micro. For this demo we built APIs for user management, group messaging, websocket streaming, sending invite emails and audio/video through Twilio WebRTC. One can only imagine where it would go with a dedicated team and full product focus. On the performance side, Next.js is blazingly fast by all measures. Whether it be the local reload for development or the server side rendering. It all adds to a really snappy experience on both the development and consumption side of things. With the backend we tried to pair this with Go based APIs written with Micro to ensure not just speed of development but also speed of delivery. All in all, we think Next.js and Micro are the perfect pairing for any Jamstack and API based development. Conclusions Thanks for reading this post on how we built Distributed on the Jamstack using Next.js and Micro. Find the source code for distributed on Github. If you want to build and host your own version signup to M3O and start running the same services from our open source repository micro/services. Reach out on slack or twitter if you have any questions.

  • GitHub repo advanced-go-programming-book

    :books: 《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf插件实现、Web框架实现、分布式系统等高阶主题(完稿)

    Project mention: Gopher Gold #21 - Wed Nov 25 2020 | dev.to | 2020-11-24

    chai2010/advanced-go-programming-book (Go): 📚 《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf插件实现、Web框架实现、分布式系统等高阶主题(完稿)

  • GitHub repo grpc-go

    The Go language implementation of gRPC. HTTP/2 based RPC

    Project mention: Killing PubSub connection when client of server side stream dies in go | reddit.com/r/golang | 2021-04-30
  • GitHub repo go-zero

    go-zero is 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.

    Project mention: An awesome go enlisted distributed framework. | reddit.com/r/u_go-zero | 2021-03-08
  • GitHub repo Finagle

    A fault tolerant, protocol-agnostic RPC system

    Project mention: What is the state of frameworks and libraries support to build microservices in scala? | reddit.com/r/scala | 2021-04-16

    Finagle from Twitter

  • GitHub repo deepstream.io

    deepstream.io server

    Project mention: Crossbar.io – an open source platform for distributed and microservice apps | news.ycombinator.com | 2021-05-07

    https://deepstream.io is the closest and has a richer feature set (including a replicating document store), however it seems to have a small ecosystem / community / limited support options, and permissions do not seem as advanced.

    https://nats.io is close but lower level. Has a large community and rich ecosystem however.

    Then you can also mix and match lowever level technologies to achieve the particular set of tradeoffs you need. MQTT, AMQP as the protocol, mosquitto / rabbitmq/zeromq, then json-rpc on top ...

  • GitHub repo rpcx

    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! 𝐉𝐚𝐯𝐚有𝐝𝐮𝐛𝐛𝐨, 𝐆𝐨𝐥𝐚𝐧𝐠有𝐫𝐩𝐜𝐱!

  • GitHub repo RoadRunner

    High-performance PHP application server, load-balancer and process manager written in Golang

    Project mention: Laravel Octane | dev.to | 2021-04-14

    Laravel Octane is an open-source package that will boost your Laravel application performance. Laravel Octane requires PHP 8, so if you're still on 7.x, you need to upgrade your PHP version. Under the hood, Octane makes use of Swoole and RoadRunner - two application servers, that take care of serving and booting up your Laravel application. Why is it faster, you might ask. Let me explain.

  • GitHub repo swoft

    🚀 PHP Microservice Full Coroutine Framework

  • GitHub repo twirp

    A simple RPC framework with protobuf service definitions

    Project mention: Introducing DRPC: The Storj Replacement for gRPC | reddit.com/r/golang | 2021-04-27

    I'm not sure I follow. Going by twirps documentation, the code to setup an http hosted server speaking JSON looks something like

  • GitHub repo tonic

    A native gRPC client & server implementation with async/await support.

    Project mention: What you don't like about Rust? | reddit.com/r/rust | 2021-05-17

    Only thing I don't like so far is having tons of boilerplate to have my struct fields correctly typed between my actix rest facade and the underlying tonic grpc microservices (having copycat structs with same fields but some casted to ::uuid::Uuid instead of ::std::string::String, or some to::chrono::DateTime instead of ::std::option::Option, and so on). That's not really Rust's fault at all, but I wish there was a better way (if ever there is that I'm unaware of, please point me out in the right direction).

  • GitHub repo Armeria

    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.

    Project mention: sttp now suppots Armeria backend | reddit.com/r/scala | 2021-02-23

    Armeria which fully supports Reactive Streams and non-blocking IO now powers sttp as a backend.

  • GitHub repo AutobahnPython

    WebSocket and WAMP in Python for Twisted and asyncio

    Project mention: Which self hosted Pub/Sub realtime technology (websockets etc) do you use and why? | reddit.com/r/node | 2021-04-01

    I can find socket.io, faye, deepstream.io , autobahn-js and nchan, centrifugo. Can you also explain why you chose it and if you had troubles with some other solution?

  • GitHub repo Hprose-PHP

    Hprose is a cross-language RPC. This project is Hprose 3.0 for PHP

  • GitHub repo goworld

    Scalable Distributed Game Server Engine with Hot Swapping in Golang

  • GitHub repo AutobahnAndroid

    WebSocket & WAMP in Java for Android and Java 8

  • GitHub repo Nethereum

    Ethereum .Net cross platform integration library

    Project mention: Local signing for nft/deploy on Tatum API for non-custodial wallet | reddit.com/r/tatum_io | 2021-04-18

    As I mentioned in my initial post, I will use Nethereum.Signer to sign in .NET.

  • GitHub repo hprose

    Hprose is a cross-language RPC. This project is Hprose for Golang.

  • GitHub repo rpclib

    rpclib is a modern C++ msgpack-RPC server and client library

    Project mention: rpclib is looking for a new maintainer | reddit.com/r/cpp | 2021-04-24

    Thanks for all your hard work in the past years. I'm not able to take over as a maintainer, but you mentioned CI rot and I can take thorough look at that! I opened a small PR refactoring the AppVeyor configuration.

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2021-05-17.

Index

What are some of the best open-source Rpc projects? This list will help you:

Project Stars
1 advanced-java 54,034
2 Protobuf 47,865
3 aria2 22,805
4 FlatBuffers 16,176
5 go-micro 15,960
6 advanced-go-programming-book 14,971
7 grpc-go 13,694
8 go-zero 7,994
9 Finagle 7,957
10 deepstream.io 6,859
11 rpcx 5,642
12 RoadRunner 5,565
13 swoft 5,326
14 twirp 4,717
15 tonic 3,502
16 Armeria 3,105
17 AutobahnPython 2,276
18 Hprose-PHP 1,924
19 goworld 1,830
20 AutobahnAndroid 1,440
21 Nethereum 1,251
22 hprose 1,156
23 rpclib 1,033
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com