最新要闻
- 天天讯息:索尼要爆发了!明年有望推出新款PS5:独占大作护航
- 每日播报!疯狂裁员后 曝马斯克正为推特寻找新买家
- 环球最资讯丨“三连跌” 明晚油价迎年内“最后一调”:92号汽油或回归7元时代
- 世界头条:豆瓣8.3分!《阿凡达:水之道》票房破3亿:会是救市之作吗
- 全球热推荐:低温蓝色预警!这些地方最低温较历史同期低7℃以上:南方网友瑟瑟发抖
- 克罗地亚2-1战胜摩洛哥夺世界杯季军 37岁莫德里奇告别世界杯赛场
- 环球滚动:女子开特斯拉被查酒驾 罚2000元记12分:本人称吃醉蟹 交警回应
- 销售开特斯拉撞了顾客的特斯拉 拒赔5万元:直言刹车了停不住
- 史上口碑最好的小米旗舰!小米13京东好评率接近100%
- 全球快资讯:基于海拉克斯打造 丰田推出首款纯电皮卡原型车 网友:丑到我眼睛了
- 天天快资讯丨卡神离开Meta 批老东家效率低下:GPU利用率5%简直是侮辱
- 全球热点评!小米MIX Fold 2新配色下周首销:5.4mm厚度已是行业极限 8999元
- 今热点:同价位无敌手!小米万兆路由器更新
- AMD、NVIDIA齐发新品 显卡厂商的好日子来了:加速去库存
- 世界快报:男子1199元买长江存储2TB SSD吐槽是翻新 手指划痕:网友看完笑死
- 世界快消息!用户真实评价小米13:太惊艳了 这就是小米13带给我的感觉
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【世界聚看点】go-micro v3 rpc服务一次改造经历
地址:https://github.com/go-micro/go-micro
【资料图】
grpc-test-demo:https://gitee.com/jn-shao/go-gmicro-rpc-test.git
go-micro api网关:
api网关替换为kong ,使用consul做dns服务器。
旧项目用的是http->go-micro v3 rpc,后端全都是自己的rpc,proto定义数据格式如下:
message Request { string method = 1; string path = 2; map header = 3; map get = 4; map post = 5; string body = 6; string url = 7;}message Response { int32 statusCode = 1; map header = 2; string body = 3;}
不通用,非restful,参数动态前后端参数处理很麻烦,后续换网关,调整服务都很被动,go-micro v3不熟悉,发现go-micro v3 将server和client抽象出来有各自的管道处理(middleware),所以链路、熔断限流这些中间件使用框架本身封装的不需要动,只需使用插件替换server和client,改造难度不是很大,索性研究下全部替换掉。
注:服务名不能使用 . 不然dns会解析不到ip,可以通过下面命令测试自己的服务:
$ dig @ -p 8600 <服务名>.service.consul SRV
api:
server转为http restful 替换为gin路由器:https://github.com/go-micro/plugins/tree/main/v3/server/http
官方例子可以看出插件是把路由器放进去,可以直接替换gin,简单来讲http基础包封装的http框架即实现Handler的ServeHTTP方法的都可以替换
client转为grpc client:https://github.com/go-micro/plugins/tree/main/v3/client/grpc
部分修改代码:
package initialize
func Routers() *gin.Engine {Router := gin.Default()ApiGroup := Router.Group("/v1")router.InitPodRouter(ApiGroup)return Router}
package main
......srv := httpServer.NewServer(func(options *server.Options) {options.Advertise = serviceHost + ":" + servicePort},server.Name("podApi"),server.Version("latest"),)mux := initialize.Routers()if err := srv.Handle(srv.NewHandler(mux)); err != nil {common.Fatal(err)}service := micro.NewService(//开启gin http servermicro.Server(srv),//使用grpc clientmicro.Client(grpcClient.NewClient(client.RequestTimeout(time.Second*5))),......)......global.PodService = go_micro_service_pod.NewPodService("podSrv", service.Client())......
srv:
server转为grpc server:https://github.com/go-micro/plugins/tree/main/v3/server/grpc
部分修改代码:
package main
......service := micro.NewService(//开启grpc servermicro.Server(grpcServer.NewServer(func(options *server.Options) {options.Advertise = global.ServerConfig.Host + ":" +strconv.FormatUint(global.ServerConfig.Port, 10)})),......)
配置中心consul:
旧项目注册中心和配置中心使用的都是consul,这里配置中心替换为nacos,使用go-micro v3封装的config:https://github.com/go-micro/plugins/tree/main/v3/config/source
viper:https://github.com/spf13/viper
nacos-sdk-go:https://github.com/nacos-group/nacos-sdk-go
部分修改代码:
package initialize
var configFileName = "config.yaml"func InitConfig() {var nacosConfig localconfig.NacosConfigif err := GetLocalConfig(configFileName, &nacosConfig); err != nil {common.Fatal(err)}config, err := GetNacosConfig(nacosConfig.Host, nacosConfig.Port, nacosConfig.Namespace,nacosConfig.DataId, nacosConfig.Group)if err != nil {common.Fatal(err)}if err := config.Get().Scan(&global.ServerConfig); err != nil {common.Fatal(err)}}func GetLocalConfig(localConfigFileName string, config interface{}) error {v := viper.New()v.SetConfigFile(localConfigFileName)if err := v.ReadInConfig(); err != nil {return err}if err := v.Unmarshal(config); err != nil {return err}fmt.Printf("本地配置信息:%+v", config)zap.S().Infof("本地配置信息:%+v", config)// 动态监控func() {v.WatchConfig()v.OnConfigChange(func(e fsnotify.Event) {fmt.Printf("本地配置文件产生变化:%s", e.Name)zap.S().Infof("本地配置文件产生变化:%s", e.Name)_ = v.ReadInConfig() // 读取配置数据_ = v.Unmarshal(config)fmt.Printf("本地配置信息:%+v", config)zap.S().Infof("本地配置信息:%+v", config)})}()return nil}func GetNacosConfig(host string, port uint64, namespace string, dataId string, group string) (config.Config, error) clientConfig := constant.ClientConfig{NamespaceId: namespace,TimeoutMs: 5000,NotLoadCacheAtStart: true,LogDir: "tmp/nacos/log", CacheDir: "tmp/nacos/cache", LogLevel: "debug",}nacosSource := nacos.NewSource(nacos.WithAddress([]string{host + ":" + strconv.FormatUint(port, 10)}),nacos.WithClientConfig(clientConfig),nacos.WithDataId(dataId),nacos.WithGroup(group),)conf, err := config.NewConfig()if err != nil {return conf, err}err = conf.Load(nacosSource)return conf, err}
注·:
(1)clientConfig中的LogDir和CacheDir要手动创建
(2)此处有一个坑,遇到nacos v1和v2兼容性问题,v2多开了一个9848 grpc端口,nacos-sdk-go v2配置http无效,都会转成grpc请求9848端口获取配置信息,当然使用nacos-sdk-go v1请求8848是没问题的,但go-micro v3 插件依赖的是nacos-sdk-go v2,前期没注意按照v1部署,需打开9848端口。被这个bug:https://github.com/nacos-group/nacos-sdk-go/issues/531干扰了,官方应该是有意将9848专门负责拉取配置信息,并且兼容v1版本
nacos-docker:https://github.com/nacos-group/nacos-docker
// 获取容器ip$ docker image inspect --format="{{json .NetworkSettings.IPAddress}}" // 映射端口$ iptables -t nat -A DOCKER -p tcp --dport 9848 -j DNAT --to-destination :9848
-
【世界聚看点】go-micro v3 rpc服务一次改造经历
地址:https: github com go-micro go-microgrpc-test-demo:https: gitee com jn-shao go-gmicro-rpc-test
来源: 【世界聚看点】go-micro v3 rpc服务一次改造经历
天天讯息:索尼要爆发了!明年有望推出新款PS5:独占大作护航
MyBatis核心配置文件详解
每日播报!疯狂裁员后 曝马斯克正为推特寻找新买家
环球最资讯丨“三连跌” 明晚油价迎年内“最后一调”:92号汽油或回归7元时代
世界头条:豆瓣8.3分!《阿凡达:水之道》票房破3亿:会是救市之作吗
全球热推荐:低温蓝色预警!这些地方最低温较历史同期低7℃以上:南方网友瑟瑟发抖
克罗地亚2-1战胜摩洛哥夺世界杯季军 37岁莫德里奇告别世界杯赛场
焦点关注:[PingCTF2022] guess what - S1gMa
环球滚动:女子开特斯拉被查酒驾 罚2000元记12分:本人称吃醉蟹 交警回应
销售开特斯拉撞了顾客的特斯拉 拒赔5万元:直言刹车了停不住
智慧树视频课件课程下载工具,如何在电脑端下载智慧树视频课件PDF,PPT到本地
史上口碑最好的小米旗舰!小米13京东好评率接近100%
VUE组件
【世界时快讯】安全多方计算:(2)隐私信息检索方案汇总分析
全球快资讯:基于海拉克斯打造 丰田推出首款纯电皮卡原型车 网友:丑到我眼睛了
天天快资讯丨卡神离开Meta 批老东家效率低下:GPU利用率5%简直是侮辱
全球热点评!小米MIX Fold 2新配色下周首销:5.4mm厚度已是行业极限 8999元
今热点:同价位无敌手!小米万兆路由器更新
全球观热点:第八天 循环的花里胡哨的用法
重学c#系列——linq(4) [三十]
【速看料】400行的象棋程序
AMD、NVIDIA齐发新品 显卡厂商的好日子来了:加速去库存
世界快报:男子1199元买长江存储2TB SSD吐槽是翻新 手指划痕:网友看完笑死
世界快消息!用户真实评价小米13:太惊艳了 这就是小米13带给我的感觉
精彩看点:北欧品质 口感清爽:OATLY燕麦奶4.1元/斤新低(商超29.8元)
【天天新视野】男子称买到过期3月沐浴露获赔5元:看不起谁呢
焦点信息:java基础面试题
【报资讯】Docker的资源控制管理
全球热资讯!BBA的禁脔 垂涎者不止蔚来
当前通讯!Docker网络模式
环球热点评!冬天空调取暖不热 可能是这些问题
环球观速讯丨小米13成了!线下门店卖断货 供不应求
热点!web项目的开发---第二天
世界今头条!SpringCloud-Ribbon学习笔记
世界速看:挑战行业多项不可能 一加11即将发布:最强性能旗舰
世界动态:python语法笔记
令人气愤!女子曝无良汽修店为赚钱高速路上撒钉子专扎车胎
天天视讯!刘作虎:OPPO一加正式开启双品牌战略 100亿投资扶植一加
环球观速讯丨义乌开始生产阿根廷夺冠球衣 还是三颗星 阿根廷辟谣:假的 侵权
世界快播:“顶级大众” 宾利Batur公布工艺细节:210克黄金3D打印
老人手指被卡:消防员用开塞露救了差点被剪的蓝宝石戒指
全球快资讯:一文了解 Dubbo 的代码架构
今日报丨关于整数二分的详解
滚动:预编译#error的使用
全球要闻:YoloV7 标签匹配机 loss 计算详解
安全多方计算(1):不经意传输协议
每日快讯!元旦假期首日火车票今开抢!迎出行小高峰:五大热门目的地出炉
观天下!Find N2系列发布背后:OPPO再次展示对产品精益求精态度
天天要闻:全国冻哭预警地图来了:周末20余省份或被冻哭 冷到破纪录
热议:售价超300万!乔布斯亲手编号Apple-1电脑落锤成交:46年后 开机画面眼前一亮
世界最大独立圆柱体水族馆爆裂:1500多条鱼全军覆没
世界杯决战前夕 法国又有两大主力倒下!5人感染神秘流感
【环球热闻】被加价千元:AMD喊话正加大RX 7900系生产!NV 4080笑而不语
世界简讯:VUE数据双向绑定
第一百一十四篇: JS数组Array(三)数组常用方法
世界上最大的鱼缸今日突然破裂:100万升水泄露 1500条鱼死亡
放假3天不调休!2023年元旦假期首日火车票开售 除夕票这一天就能买
天天报道:学谁不好学特斯拉!几十万的宝马车 容不下一个收音机
观天下!骗子诈骗1250万 买彩票中1450万:已退还给39名聋哑人
全球热讯:XSX性能比PS5强 但为何游戏性能总是输?
天天速看:Python函数/动态参数/关键字参数
天天热点!女子发烧敷20分钟面膜揭下变3D立体面具 医生提醒:影响退热 当心面瘫
方便面消费第一大国是我们:超6成人每周吃三次
世界速读:注解在Android中的使用场景
热推荐:锂金属电池爱长枝晶?韩国科学家找到破解之法
【当前独家】确认了!《阿凡达2:水之道》没有片尾彩蛋
天天观速讯丨1152分区+4K 144Hz 联合创新32寸miniLED显示器首发5399元
终于修好了!Win11新补丁解决22H2大文件复制缓慢Bug
首款第二代骁龙8游戏旗舰!红魔8 Pro来了
今日最新!王思聪投资百万成立新公司 经营范围包括动漫游戏开发
全球最资讯丨全自动门锁比半自动更人性化!但半自动更受青睐 真相终于揭开
世界简讯:Hessian2序列化支持这一点,让重构dubbo接口更容易了
【热闻】-真正的国产亲民MPV 新款传祺M6 PRO上市:11.98万起
看点-旗下新作首月收入超4.8亿!腾讯成为《妮姬》开发商Shift Up第二大股东
女子高烧39.8度喊妈 妈妈以为鸭子叫没搭理 网友:怎么又变异了
观察-《三体》动画明天开播第3集 官方公布史强、古筝行动档案
【天天聚看点】微信小程序报错“getLocation:fail the api need to be declared in the requiredPriva
【全球快播报】记录--三分钟打造自己专属的uni-app工具箱
视点!小米万兆路由器用上企业级处理器!卢伟冰:降维打击
【天天报资讯】LCD面板价格连连下跌!LG P7 LCD工厂停产
环球关注:中国高速看山东!山东高速施工用上北斗卫星:精度达到毫米级
世界要闻:三大板卡品牌之一的微星缺席RX 7900首发 原因揭晓:直接非公版
世界快消息!女生手捏温度计度数直线飙到38度!腋下一测39.5度
天天日报丨项目经理的核心价值:以目标为导向做正确的事
环球热点评!Vue3项目-生成Cron表达式组件
世界今亮点!MIUI 14终于再次成为最好用的操作系统
ChatGPT已经牛到取代谷歌了?测试结果来了
男子每天点赞上万次被处罚 当庭演示一分钟才点赞91个
【当前独家】“智轨列车”亮相咸阳:可识别虚拟轨道 载客达300人
全球新动态:研究揭示马桶不盖盖后果多严重:致病菌满屋乱飞
全球滚动:Java 反射概念的引入
天天热议:小米13太火爆了 博主准点抢购结果秒没:最后等了20分钟捡漏 成功上车
【天天速看料】“火流星”掉落 专家判断陨石来自46亿年前:比地球上所有石头都古老
当前速看:《阿凡达2》成2022进口片首日票房冠军!时隔69天单日再破亿 豆瓣8.4分
价格能顶半套正版Win11 老牌压缩软件WinZip 27发布 你会买吗?
快播:44岁的泰国长公主因心脏问题失去知觉:紧急送医
渗透实录-01
要闻:Nacos 2.2 正式发布,这次更新太炸了!
世界关注:Kerberos身份验证在ChunJun中的落地实践