go chassis 微服务框架

编程入门 行业动态 更新时间:2024-10-21 07:43:17

go chassis 微服务<a href=https://www.elefans.com/category/jswz/34/1770644.html style=框架"/>

go chassis 微服务框架

go-chassis 华为云CSE开源微服务框架

go-chassis本身也是go语言开发的,集成了很多的功能,提供了一站式服务,能够让用户在一个方案中,
获得路由管理,注册发现,负载均衡,限流,指标监控,分布式追踪等大量功能。go chassis是一个协议中立的开发框架,它不仅支持http,也支持rpc协议,甚至可以集成mysql等中间件的协议。go chasis支持Istio控制面板,也就是说你可以将它与envoy进行混合使用,只需要使用istio即可,
它支持原生的istio配置管理。以此使服务吞吐提升,CPU占用降低。go chassis是插件化设计,支持用户开发定制模块,并接入到框架中

github/go-chassis/go-chassis
github/go-chassis/go-chassis-protocol/client/grpc
github/astaxie/beego

微服务注册中心:

service-center 是服务注册中心
服务提供者(provider)可以将自身的实例信息注册到中心,
以供服务消费者(consumer)从 中心发现并使用它

下载linux版本包

$ wget .0.0/apache-servicecomb-incubating-service-center-1.0.0-linux-amd64.tar.gz

解压tar包

$ tar -zxvf apache-servicecomb-incubating-service-center-1.0.0-linux-amd64.tar.gz

启动servicecenter服务

$ cd apache-servicecomb-incubating-service-center-1.0.0-linux-amd64/
$ ./start-service-center.sh
$ ps -ef | grep service-center
root     27048     1  2 14:38 pts/2    00:00:00 ./service-center
root     27164 22742  0 14:38 pts/2    00:00:00 grep --color=auto service-center

查看监听配置

$ cat conf/app.conf | grep "sever options" -A 16

#sever options
##################################################################
#if you want to listen at ipv6 address, then set the httpaddr value like:
#httpaddr = 2400:A480:AAAA:200::159        (global scope)
#httpaddr = fe80::f816:3eff:fe17:c38b%eth0 (link-local scope)
httpaddr = 127.0.0.1
#运行端口
httpport = 30100read_header_timeout = 60s
read_timeout = 60s
idle_timeout = 60s
write_timeout = 60s
max_header_bytes = 32768 # 32K
max_body_bytes = 2097152 # 2Menable_pprof = 0

查看端口监听

$ netstat -apn | grep :30100
tcp        0      0 127.0.0.1:30100         0.0.0.0:*               LISTEN      27048/service-cente

$ curl http://127.0.0.1:30100

{"_links":{"pb:latest-pact-versions":{"href":"http://127.0.0.1:30100/pacts/latest","title":"Latest pact versions"},"pb:latest-provider-pacts":{"href":"http://127.0.0.1:30100/pacts/provider/{provider}/latest","title":"Latest pacts by provider","templated":true},"pb:latest-provider-pacts-with-tag":{"href":"http://127.0.0.1:30100/pacts/provider/{provider}/latest/{tag}","title":"Latest pacts by provider with a specified tag","templated":true},"pb:pacticipants":{"href":"http://127.0.0.1:30100/participants","title":"Pacticipants"},"pb:publish-pact":{"href":"http://127.0.0.1:30100/pacts/provider/{provider}/consumer/{consumer}/version/{consumerApplicationVersion}","title":"Publish a pact","templated":true},"pb:webhooks":{"href":"http://127.0.0.1:30100/webhooks","title":"Webhooks"},"self":{"href":"http://127.0.0.1:30100/","title":"Index"}},"curies":[{"href":"http://127.0.0.1:30100/doc/{rel}","name":"pb"}]}

至此,service-center服务已成功启动,其监听地址为: 127.0.0.1:30100

代码实例:

jk-gateway 网关
func main() {if err := chassis.Init(); err != nil {lager.Logger.Error("Init failed." + err.Error())return}reply := &pb.UserResp{}req := &pb.UserReq{}//C端名称,Rpc,调用函数名,请求参数,返回参数util.Call_GRPC("jk-user", "rpc_pb.User", "List", req, reply)beego.Debug(beego.VERSION)beego.Run()
}
jk-user 用户模块

func main() {user := rpc.Rpc_user{}//注册到服务中心chassis.RegisterSchema("grpc", &user,server.RegisterOption(func(o *server.RegisterOptions) {o.RPCSvcDesc = rpc_pb.RegisterUserServer}),)if err := chassis.Init(); err != nil {lager.Logger.Error("Init failed.")return}model.Init()chassis.Run()
}
server-center 注册中心
`官方文档`:
1..html?from_wecom=1
2. Install server-center
3. ServiceComb Website 
4. Service-Center 的Download 下载对应的版本
linux/ Darwin 是mac版本
按照文档可以生成看到具体的链接模块
执行脚本运行可视化服务

运行效果:

微服务框架对比:

Go micro是一个插件化RPC分布式开发框架,开箱即用,也可以任意定制自己的RPC协议中的每个模块。他是一个eco system,现在已经有大量的插件实现,并在go-micro基础之上有了很多的新框架,Micro组织下有许多围绕go-micro建立的子项目。

Go kit是一个用来构建微服务的的工具包,每个包都是独立的,开发者自己选择需要的工具组装自己的微服务,包含了丰富的治理功能,熔断,监控,限流等,且拥有丰富的插件化协议和注册中心。

Go chassis是插件化框架,与Go micro的不同在于,go chassis提供的能力是插件化协议,你可以将http或RPC,甚至是Mysql,Redis等协议接入到框架中,并且提供一站式功能,将熔断,限流,监控等功能全部集成到框架中,开发者无需自己寻找这些方案。拥有3者中最丰富的治理功能。同样拥有开放的定制能力,但是作为一个新的框架,生态尚需完善

更多推荐

go chassis 微服务框架

本文发布于:2024-03-06 14:39:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1715572.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:框架   chassis

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!