Golang Go语言中大家微服务都是什么方案?
1.使用微服务框架 2.直接 k8s 不知道大家生产环境 golang 的微服务方案怎么做的,希望一起讨论学习下
Golang Go语言中大家微服务都是什么方案?
微服务框架在 k8s 内部署。
k8s
1 、go-kratos
2 、k8s 、k3s
gin+consul+阿里云 ACK
简单的直接用 k8s ,
复杂一点的通过 istio 改造
好奇怪的问题,K8s 和业务没什么关系啊,只是用来做 declarative 运维的。
字节的 hterz + kitex 可以考虑下
现在连过去大型国企的 java spring cloud 都在改造为 service mesh, 还搞微服务框架真的是逆历史潮流。
service mesh 多数还能尽可能做到无侵入式, 微服务框架能有几个做到。
看看蚂蚁金服的 sofastack ,istio 和 微软的 dapr 吧。
相关报道很多很多
https://www.sohu.com/a/508786560_515599
一个项目一个镜像,k8s 多 pod 发布就可以了,大部分企业完全够用
dns 作为服务发现注册也算吧
看了下正文)微服务上不上 k8s 并没啥关系。直接一个服务一个 vm 我也见过,不上 k8s 好处就是没学习成本,坏处就是资源浪费。至于运维 cicd 弄好了都一样
springcloud 和 service mesh 并不是替代的关系,架构是会演进的,springcloud 仍然适合大多数中小企业
冷知识,蚂蚁 sofa ,字节 kitex ,但内部的核心应用都是巨型单体(编译产物几个 g ,分钟级启动时间)
所以如果你是一个人,建议一把梭
微服务架构并不适合中小企业。推荐用 gin ,负载均衡。(面向简历编程,当我没说。)
作为配置管理也算吧 🐶
grpc+etcd ?不推荐 go-zero ,bug 多,难维护。其他的没用过。
大道归一,单体项目,前后端不分离
首先问,不用微服务行不行?行?那用它干嘛呢。
单体 YYDS
#13 不用容器编排好像不太方便快速伸缩服务
如果我没理解错,你说的是这个是大仓模式,但其实,只是项目代码是一个单体,编译是一个单体,但服务是可以按需启动的。
腾讯内部很多项目也是采用大仓模式
grpc+consul ,说 k8s 的都是运维吧
99%的公司不需要 k8s
Dapr
不用框架,需要什么自己简单封装一个就可以了。
用微服务平台,还是 k8s ,取决于公司/项目组的运维能力以及架构考量。
上个月碰到的一个西门子的项目组,就是 all-in AWS ,完全不搞 k8s ,但也说了内部有其他部门选择维护自己 k8s 集群。
grpc+k8s
能细说一下吗? 因为个人项目刚开始用 go-zero 。go-zero 目前只是感觉有点臃肿。
struct 不支持 time.Time ,自带的(生成的代码) json unmarshal 有严重 bug ,某些情况会没有值。生成的代码又乱又多,前期代码少的时候还好,后面多了没法维护。还有其他很多问题已经不记得了。
后面就是发现什么的问题,就把它自带的组件换成自己写的。所以还不如一开始就自己把所有东西弄好,不用这玩意。
而且这东西更像 Java 搞得那一套,什么东西都搞得又臭又长,真的一言难尽。
kratos + k8s, 目前这套用的很爽.
微服务和 go 也没啥关系。
就是拿 go 写个服务,然后外面整个 k8s 把几个服务穿起来。
grpc + protobuf 随便撸啊
kratos 二开
iac 编排也可以,其实小公司 k8s 不一定是最优解可能会是最差解;甚至伸缩也不一定是需要。至于微服务的话,我觉得刚开始最好别怎么拆。前期拆两个(用户中心+主业务)就是够了,然后生成 http 接口直接给前端。
- go zero —— 中文友好
2. kubernetes 或 TKE
3. +CI/CD+helm
eagle + docker image + k8s
protobuf -> http + gRPC(服务间)
大部分 脚手架直接生成
PS: https://github.com/go-eagle/eagle
trpc+k8s
在Golang(Go语言)中,微服务架构的实现方案通常包括以下几个关键组件和技术:
-
通信协议:
- gRPC:一个高性能、开源的RPC框架,支持多种编程语言,基于HTTP/2协议,提供双向流、头部压缩和多路复用等特性,能够显著提高服务间的通信效率和可靠性。
- RESTful API:使用HTTP协议和RESTful风格设计API接口,简单易懂,兼容性好。
-
服务管理:
- API Gateway:作为所有客户端请求的入口点,负责请求路由、组合、协议转换以及负载均衡等功能。
- Nacos:一个动态服务发现、配置管理和服务管理平台,提供包括服务注册与发现、动态配置、DNS服务等多种功能。
-
容器化与编排:
- Docker:一种容器化技术,可以将应用程序及其依赖打包成一个标准化的单元,简化应用的部署和管理。
- Kubernetes:一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。
-
监控与日志:
- Prometheus:用于收集系统的监控指标。
- ELK(Elasticsearch、Logstash、Kibana):用于收集和分析日志。
综上所述,Go语言微服务架构的实现方案涉及多个方面,需要综合考虑通信协议、服务管理、容器化与编排以及监控与日志等技术。根据项目的具体需求和团队的熟悉程度,可以选择合适的方案进行实现。