8 ms·
Show HN: A microservice framework, listed in CNCF Landscape, 1 year 10k+ stars
- isuckatcoding 5y agoLittle bit confused by the chart in the benchmark section: https://github.com/zeromicro/go-zero#7-benchmark https://github.com/zeromicro/go-zero#7-benchmark What is it trying to show?
- patrickevans 5y agoCompares to the other frameworks, the test code is here: https://github.com/smallnest/go-web-framework-benchmark https://github.com/smallnest/go-web-framework-benchmark
- sethammons 5y agoThe graph is unparsable for me. Typically, for what I think is trying to be shown, you would put the requests per second on the x axis, you would put the response times on the y axis, and the color coding be to assign them a label of the framework. I'd probably use a line chart too since, as we increase rps, we expect a change in response time. What the graph reads: If my framework is beego and I want to get 30k rps, I would need to limit my data to processing times in the 0ms bucket. I think? Or maybe gin will allow for 7.5k rps if my processing time is 500ms? Like, I think I can get to similar information to what you are trying to show if I read backwards, upside down, and rotated 90 degrees.
- Zababa 5y agoMaking the graph start at 5000 instead of 0 looks dishonest.
- patrickevans 5y agoI agree. But it's plotted by the benchmark project, not written by me. I didn't spend time changing it.
- rubiquity 5y agoIt would create more interesting conversation if you highlighted the merits of your design rather than superficial measures like CNCF blessings (there are thousands of such projects) and GitHub stars (easily gamed).
- patrickevans 5y agoThe description might not be good enough, but I have to write something. It's used by many companies and projects. And the design is described in github readme, it's rather long to tell here. Thanks!
- debarshri 5y agoIs getting listed in cncf landscape a big deal? Is it an official cncf project?
- justincormack 5y agoIt is an official CNCF project, but its not very difficult to get added, see https://github.com/cncf/landscape#new-entries https://github.com/cncf/landscape#new-entries you need 300 github stars and to be cloud native.
- debarshri 5y agoThanks for your response!
- ignoramous 5y agoHi, are you involved with the project in a substantial capacity? If not, show hn isn't an appropriate qualifier. May be, tell hn (or, no qualifier) is.
- nsonha 5y agosurely it has a key differentiator? > It's used by many companies and projects No one cares, they would care if you have contributions from many parties which indicates longivity, do tell in that case. I do think your project is interesting, it's just the title doesn't do it justice.
- no_circuit 5y agoI had to dig in a bit to see the whole scope of this project. It seems go-zero has: 1) Go library/main that wraps gRPC handlers to build a server, like Dropwizard or TwitterServer? 2) A CLI tool "goctl" that does code generation for setting up the code layout (server and client API stubs), as well as some Docker/k8s functionality for deploying. I'm not into Go so can't comment on aspects like the performance benchmark. However the project documentation is quite interesting if you'd like to see how, presumably the company for which this was built for, their production environment is set up like CI/CD, logging, etc. It could be more helpful if the architecture diagram showed the roles of the different pieces better. For example it isn't immediately clear what component does authentication so then the JWT can be used for service authorization. So the question would be is how much is the framework tied to some assumptions in a production setup.
- patrickevans 5y agoThanks for your comment! go-zero is easy to use with docker/Kubernetes, we built a command line tool to generate the Dockerfile and Kubernetes deployment files. It's easy to use with ECSs as well, because Go packages it into a single executable binary, you can use tools like supervisord to manage it easily. As the name of go-zero, I was trying to tell 2 things: 1. go from zero with microservices development 2. go from zero when you get something hard to fix, perhaps you think the problem itself in a wrong way Also, go-zero consists of 3 main parts: 1. api gateway, along with a newly created simple API idl to describe apis 2. zRPC, with the microservices governance built on top of gRPC 3. goctl, a command line tool to make microservices development much easier Not sure if I answered your question?
- icy 5y agoI love Go to bits, but I really don't like how so many tools revolve around codegen and boilerplate. Look at Kubernetes for example: you can't write an operator without generating a bunch of boilerplate.
- dagss 5y agoI think it's because metaprogramming/macros is a thing Go doesn't have that very many other languages have. Whether the Java/.NET way, the LISP way or the Python way -- most languages have ways of making DSLs and metaprogramming etc in more flexible ways than Go. I wish Go just got something like Lisp macros that could work compile-time only. Running macros at run-time isn't really the big deal, but generating code in the same language and context as the normal code is a big deal. Adding generics really doesn't help much here..
- pjmlp 5y agoThe irony is that Java and .NET already trailed that path 20 years ago.
- chazu 5y agoYou don't need any boilerplate to write an operator - you can write an operator in any language. I've written several in python and they all clock in under 300 sLoC
- lifeisstillgood 5y agoI think this sort of project is in short supply. Kubernetes seems to have sucked all the air out of the room, and yet we need variety and different approaches to grow. I look forward to (trying) to replicate something similar for my own understanding. Any architecture docs will be gratefully recveied
- 0xbadcafebee 5y agoI think the architecture of something like K8s pretty well sums up all (or most) of the components needed for a distributed system. What's really needed today is differentiation on the actual end result of that design. We need simpler technology that works better, and that's hard; it's not enough to have a fancy idea and throw together some lines of code. That's been done, and it kinda sucks. What's needed now is to focus on making it easier and simpler to do specific things. For example: most people just want to receive infinite HTTP requests and route them to custom business logic, automatically scaling as needed. So why can't I just push a button and make that happen? AWS ECS has a command-line client now that attempts to do that, but it's clunky and unreliable. And K8s doesn't have anything like that; it's all hand-crafted YAML files and mountains of custom cluster configuration. I just want to run some code at scale. And we've implemented that (scaling web requests/business logic) a million times by now. But it's never really gotten significantly easier. Docker is a good example of the amount of work you need to pour into a technical solution to make it a game-changing user solution. Docker is like 50 different technical solutions rolled up into one user-friendly command-line tool and a backend daemon. You could do most of what Docker does in LXC, but it was painful. Docker made it easy. That's what we need for running services at scale in general. Docker Swarm was created basically to scratch that itch, but it still hasn't really taken off. I'm hopeful it does one day.
- sofixa 5y ago> Docker Swarm was created basically to scratch that itch, but it still hasn't really taken off. I'm hopeful it does one day. It never will, that ship sailed a long time ago. Docker the company is struggling to survive after making wrong bets multiple times. The "enterprise" part, including Swarm, was sold off to Mirantis after years of neglect, and got some much needed investment and big fixes. Nonetheless, Docker Swarm is basically abandonware with terrible reputation without a viable future. Hashicorp's Nomad is much better placed to compete with Kubernetes. Shameless plug of my article on the matter: https://atodorov.me/2021/02/27/why-you-should-take-a-look-at-nomad-before-jumping-on-kubernetes/ https://atodorov.me/2021/02/27/why-you-should-take-a-look-at...
- asim 5y agoBeen striving in the way of micro services for a few years. My contribution is https://go-micro.dev https://go-micro.dev (17k stars)
- kingforaday 5y agoUsed this recently for something and has been very helpful. Thanks for providing this!
- ericls 5y agoWho cares about the stars
- deleted 5y ago[deleted]