概述
微服务是一种思想,与编程语言无关,编程语言是思想下具体的一种实现方式,怎么设计架构方案和实现主要看主要面临的业务场景。
(资料图)
业务场景
主站核心业务使用的是yaf(php)开发的,要实现k8s + x编程语言 自主微服务实现,受到陈皓(左耳听风)的影响,我选用的编程语言是Go,Go语言有更强大的生态,有谷歌,k8s作为强大的后盾,摸着石头过河。
设计方案架构图
Api网关
提到微服务我们就联想到Rpc,主流微服务价格设计,微服务之间的调用都使用Rpc,微服务也有直接用http实现的,Rpc限制了开发时候的灵活性和兼容性,主要3点原因:
1.Http协议是实际通信的标准,灵活性和兼容性得到了很好的市场验证,对Rpc我抱有怀疑态度,在Api层进行权限的统一认证( Token/Cookies ) , 后期微服务体系成熟,可以统一接入Api网关服务,Api网关服务是不可缺少的,全使用Nginx反向代理的方式,再数据统计的角度上局限性。
2.控制异常,如果发生异常,Rpc服务挂掉或者遭到网络攻击/刷请求,请求会直接打到Rpc上,如果有网关层,可以在Redis中加Redis锁,把无效的网络请求进行隔离。
数据
拆分微服务最大的两个问题是数据的一致性和性能,系统性能的瓶颈主要是因为计算机Cpu,内存(memory/内存条、cache/Cpu的内存) 是非常快的,所有的性能问题大同小异,磁盘I/O往往才是性能的瓶颈。
1.数据的一致性的解决办法
模块化拆分和迁移微服务功能,把涉及到的整块进行迁移,可以按比重分流/整体功能进行,按比重分流要保留新旧数据的兼容,需要双写,现在的有声业务体量小,可以整块整块的迁移。
2.性能:有声的数据量非常小,暂时不使用redis缓存可能也不会造成什么性能问题,所以我把很小的公共部分进行了缓存,主要考虑C端用户的体验。
Go中的Grpc使用
Go-zero这个框架使用goctl工具开发速度非常高效,对调用外部的Grpc服务需要做更多的兼容,这里做一个解释说明,protoc-gen-go
、protoc-gen-go-grpc
这两个工具是protobuf的工具,是Go 1.5
版本后新加的,这个地方饶了好大一圈。
GitHub Demo 地址 : https://github.com/grpc/grpc-go
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
在有声微服务中,是调用UserRpc的权限验证部分,Go-zero不支持,所以自己写了一些兼容包。
1.首先pb文件生成Pb和Grpc文件
$ ll-rw-r--r-- 1 stark staff 69K 3 20 15:51 cp_user_internal.pb.go-rw-r--r-- 1 stark staff 34K 3 20 15:51 cp_user_internal_grpc.pb.go
2.调用UserRpc服务,需要实现的包是客户端部分代码,本地需要TLS加密,服务才能被调用的到,grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})))
是TLS灵魂。
package clientfunc Auth(Session string, Action string, Controller string, Param string) bool { // 1.建立链接 flag.Parse()conn, err := grpc.Dial("testing.gongzicp.com:1443", grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})))if err != nil {log.Fatalf("did not connect: %v", err)}defer conn.Close()client := pb.NewUserInternalClient(conn)//2.验证管理员权限resp, err := client.AdminMid(context.Background(), &pb.UserInternalParams_AdminMidReq{Session: Session,})//3.验证菜单权限auth, err := client.AdminAuth(context.Background(), &pb.UserInternalParams_AdminAuthReq{Action: Action,Controller: Controller,Param: Param,Session: Session,})//....}
问题和反思
1.有声服务和主站的关联非常小,但是也有关联NovelId获取信息的部分,Novel属于核心服务,可能每一个地方的需要都不少。
2.Web端(Ukey) 、App安卓/Ios(Token) 本质上是一个维度的东西,类型上应该只用户/和系统管理员2种类型,最好是把服务类抽离出来做成单独的服务,可能会更好一些。
关键词:
(责任编辑:黄俊飞)推荐内容
- 环球今亮点!微服务 - Go语言从单体服
- 【世界新视野】美国财长耶伦:担心国会等
- rockstargames官网下载_rockstargames库
- 世界聚焦:上海楼市的那颗“炸弹”,哑火
- 久久精品亚洲动漫无码 全球短讯
- 环球关注:和讯个股快报:2023年03月21日
- 世界今头条!抢劫杀人潜逃23年,太原警方
- 1~2月舟山外贸成绩单出炉 进出口总值同
- 热头条丨人面桃花相映红打一成语(人面桃
- 战斗王之飓风战魂6季_战斗王之飓风战魂蓝
- 速看:100吨玉米深加工设备多少钱一套?
- 环球热议:晒黑了怎么变白_皮肤晒黑了怎么
- 柳林县公安局巡特警大队暖心救助,尽职尽
- 全球关注:黄金黑暗之眼灵能碎片怎么得(
- 爱婴室:公司二股东合众投资减持主要出于
- 健康 | 糖尿病足危害大!糖尿病患者需
- 兰州中心房价_兰州中心_世界微头条
- 三峡移民多少人移到上海(三峡移民多少人
- 陶瓷的种类及名称介绍(陶瓷的种类)|每
- 职场中如何挖掘自己的独特价值?|环球快讯
- 天天热文:weekday函数的使用方法_weekda
- 氤氲书香最致远
- 当前速读:samuel johnson英文简介_samuel johnson
- 环球速读:中国汽车行业出口洞察:电动车
- 这才是今天最毁三观的瓜!
- 巴萨vs皇马前瞻:西甲本赛季的冠军还有悬
- 天天实时:今日猫咪腹水是什么症状的_猫
- 【天天播资讯】38分13板5助4帽!恩比德三
- 人类有可能躲过子弹吗_日本原子弹爆炸死
- 每日看点!焦若愚取自什么成语_丁慧中取
- 怎么判断宝宝是不是巨结肠_婴儿巨结肠的
- 哈尔滨工程大学:4000多学生制作700条短
- 看点:俞敏洪:企业家没玩过ChatGPT,没
- 今日精选:三星上线 OLED Era 网站
- iphone怎么截图只截一半(iphone怎么截图)
- 视源股份3月17日打开涨停_环球新视野
- 【天天时快讯】性方面的刷锅是什么意思_
- 今日时讯:记者湖人和里夫斯均有意续约
- 月夜沈尹默意象特点_月夜沈尹默意象 天
- 天天新消息丨天翼宽带wifi密码修改网址_
- 【环球新要闻】过生活和过日子是两种概念
- 全球头条:改名卡怎么用教程_改名卡怎么用
- 中国辣椒酱和罐头市场流通渠道及消费需求
- 六月初六是什么节日贵州_六月初六是什么
- 德才股份连续荣登中国建筑装饰行业百强企
- 全球观点:第二次工业革命的成就表格(第
- 时讯:医声丨办公室人群肺部健康保养指南
- 世界速读:1套房近59户申请!深圳三大人
- saw_说一说saw的简介
- 315后市监局火速出动:已前往调查免费评
- 咫尺是什么意思呢_咫尺是什么意思-每日精
- 每日热文:如何看待海沃德一到合同年就爆
- 天天最新:庆安县“送岗位 进社区”活
- 合肥发布新能源汽车消费补贴政策 最高补
- 当前聚焦:国家统计局:消费回升向好值得
- 世界动态:美联新材:子公司拟投资的普鲁
- 赵露思歌曲我想要住进你心里_我想要住进
- 装卸费合同范本(推荐13篇)_环球时讯
- 擦亮眼睛别轻信 济宁2月谣言榜发布
- 黄金价格还会跌吗 黄金的价格会下跌吗|
- 天天热文:weekday函数的使用方法_weekda
- 氤氲书香最致远
- 当前速读:samuel johnson英文简介_samuel johnson
- 环球速读:中国汽车行业出口洞察:电动车
- 这才是今天最毁三观的瓜!
- 巴萨vs皇马前瞻:西甲本赛季的冠军还有悬
- 天天实时:今日猫咪腹水是什么症状的_猫
- 【天天播资讯】38分13板5助4帽!恩比德三
- 人类有可能躲过子弹吗_日本原子弹爆炸死
- 每日看点!焦若愚取自什么成语_丁慧中取
- 怎么判断宝宝是不是巨结肠_婴儿巨结肠的
- 哈尔滨工程大学:4000多学生制作700条短
- 看点:俞敏洪:企业家没玩过ChatGPT,没
- 今日精选:三星上线 OLED Era 网站
- iphone怎么截图只截一半(iphone怎么截图)
- 视源股份3月17日打开涨停_环球新视野
- 【天天时快讯】性方面的刷锅是什么意思_
- 今日时讯:记者湖人和里夫斯均有意续约
- 月夜沈尹默意象特点_月夜沈尹默意象 天
- 天天新消息丨天翼宽带wifi密码修改网址_
- 【环球新要闻】过生活和过日子是两种概念
- 全球头条:改名卡怎么用教程_改名卡怎么用
- 中国辣椒酱和罐头市场流通渠道及消费需求
- 六月初六是什么节日贵州_六月初六是什么
- 德才股份连续荣登中国建筑装饰行业百强企
- 全球观点:第二次工业革命的成就表格(第
- 时讯:医声丨办公室人群肺部健康保养指南
- 世界速读:1套房近59户申请!深圳三大人
- saw_说一说saw的简介
- 315后市监局火速出动:已前往调查免费评
- 咫尺是什么意思呢_咫尺是什么意思-每日精
- 每日热文:如何看待海沃德一到合同年就爆
- 天天最新:庆安县“送岗位 进社区”活
- 合肥发布新能源汽车消费补贴政策 最高补
- 当前聚焦:国家统计局:消费回升向好值得
- 世界动态:美联新材:子公司拟投资的普鲁
- 赵露思歌曲我想要住进你心里_我想要住进
- 装卸费合同范本(推荐13篇)_环球时讯
- 擦亮眼睛别轻信 济宁2月谣言榜发布
- 黄金价格还会跌吗 黄金的价格会下跌吗|
- 环球快播:首届“深水云脑杯”全国智慧水
- 【世界独家】阳了应该怎么办-阳性感染者
- 最新资讯:矩阵工作模式实现队伍一体管理
- 思创医惠:3月13日获融资买入843.70万元
- 混凝土标号与强度等级的区别_混凝土标号
- 【环球速看料】植物线虫志
- 婴姿坊童装怎么样_婴姿坊怎么样|今日快讯
- 世界微资讯!陇西县召开“科创千村”品牌
- 汇川技术股东户数减少58户,户均持股299.
- 抱怨脱单难,不如先让自己变得更好 当前
- iphone换电池_iphone换电池要多少钱-世界
- 天山铝业最新股东户数下降6.34%
- 当前聚焦:第625场美食美酒交流品鉴活动
- 天天时讯:滕哈赫:球员们都不知判罚原则
- 关注:来一口极限续航200KM的雷丁芒果pro
- 热议:北欧风格设计理念说明_北欧风格装
- 路基弯沉试验_弯沉试验 环球讯息
- 交个税的人占劳动力总数不到10 具体详细
- 天天滚动:今日股市大盘 今日股市大盘走
- 9526开头的是什么电话能接吗(9526开头的