Replies: 6 comments 5 replies
-
Some of the old stuff hasn't changed since first being defined. I think now is probably the time to highlight some of those things and start thinking about improvement or replacement.
I don't think there's right or wrong answers. Just design choices. So counter arguments to the above.
And then counter to those
I could basically go on like this forever so whatever choices we make have to be thought through before doing it. |
Beta Was this translation helpful? Give feedback.
-
I'll give some thought to what the next phase is. I think what I'd maybe prefer to start with is a profile package much like micro which lets us define groups of plugins together for different architectures Local, Cloud, Edge and Dev. Beyond that maybe the grpc client server can use Publish/Subscribe as async calls to an RPC endpoint that does not require waiting for the response. That will then at least eliminate the broker from it and make it pure grpc. |
Beta Was this translation helpful? Give feedback.
-
I think a changelog would be useful. We don't need a v5 branch until we have better idea of that we're doing. Recently I just realised Google supports http2 and pubsub events to google cloud run apps. It to me validates the client/server's current model of Call/Stream/Publish, so I think we're fine from that perspective. What's important is just that we do some cleanup and create stability in the project so it can scale. A timeline:
On vanity urls, I think if we can do go.micro.dev/v4/plugins that will be useful but it will likely require moving plugins out to a separate repo again otherwise maybe finding a way to make it work on a different domain like plugins.go-micro.dev or something like that might be good. Back to v5. It really fees like Go Micro has the opportunity to be a standard next layer ontop of Go for distributed systems development. Packages for all types of patterns. Plugins for all the use cases. Support for multiple architectures and environments. Which means we really have to do the work around the docs, benchmarks, performance, etc. |
Beta Was this translation helpful? Give feedback.
-
Most client/server libraries don't have to deal with this problem. No one is asking net/http for named errors and if we didn't have error IDs no one would ask us either. When a client or transport error are thrown they are on the client side. It's up to the user to deal with this error and then respond accordingly. It's not our responsibility to name the error anything different. Because distributed systems often result in multi service call chains people are expecting us to solve that problem. What we really need is distributed tracing and to push people to use that. In your specific issue there you need to log more than just err if you want details. We can replace the name in the server but it doesn't fix the fact that the caller is responsible for logging and shouldn't just do log.fatal(err). |
Beta Was this translation helpful? Give feedback.
-
This is because when you do NewService the name is set in the server. When you then specify Init and --server flag it completely replaces the server with a new grpc one. There's no way around this and there's no way to reinject the values. |
Beta Was this translation helpful? Give feedback.
-
Could we get some distributed tracing implementation? |
Beta Was this translation helpful? Give feedback.
-
Previously, we've discussed some thoughts about new version of go micro, but do not have a conclusion. I've been reading the core definition codes, and found some legacy or patched methods. Whether we should re-design the core concepts, and then migrate the implementation.
Beta Was this translation helpful? Give feedback.
All reactions