【金秋打卡】第6天 Go中间件集成学习-中间件sdk的设计考虑问题
2022/10/31 3:25:03
本文主要是介绍【金秋打卡】第6天 Go中间件集成学习-中间件sdk的设计考虑问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称:海量数据高并发场景,构建Go+ES8企业级搜索微服务
课程章节:6-1,6-2
课程讲师:少林码僧
课程内容:
★项目中使用go继承中间件需要考虑的问题
防止删库删表
▲删库删表的操作一般是通过运维工单审核后才能执行
▲如果是一些日志数据,分表存储,定期清理。
▲可以对表进行整理,分出来核心表和业务表,采用白名单机制,只允许更改和删除白名单里面的库和表,对于非白名单的库表必须经过严格的工单审核,多方确认后再删,并以版本发布的形式告知整个系统
阻止异常操作
▲mysql不带where条件的查询、更新、删除,在sdk中集成检测机制,避免sql注入等问题
▲es查条件过多或者过深的嵌套查询语句
▲异常操作可能会对整个集群产生影响,导致线上事故
监控上报
▲集成后的sdk作为应用和这些中间件之间沟通的桥梁,在此进行埋点用于监控,在出现问题的时候能及时的通过查看报错信息来判断问题
多客户端支持
▲在同一个工程中我们可能会使用不同的中间件服务。比如,做了读写分离后的mysql,或者多个mysql集群、多个redis集群(例如:分布式)。在封装sdk的时候要支持多个不同实例\集群的访问,可以随意切换不同的服务,达到多客户端支持的目的
与原生操作一直,减少学习成本
▲在封装私有的sdk的时候,比如封装一个redis的通信sdk,命令(方法)尽量和redis的操作名称一直,以此来降低学习成本,避免产生歧义
▲比如在封装es的时候,要合理利用es对sql的支持,减少新手在切换es时候的学习成本
对参数的优雅处理
▲不同依赖方对服务的使用程度是不一样的,有些只需要简单的查询,有的则需要深度定制化的操作。
比如对es的封装,InitSimpleClinet是提供给普通的用户,只需要传入链接,用户密码即可,其他的条件都是走默认值。InitClinet是提供给需要多个es集群的服务,要传入更多的参数。而InitClinetWitOptions则是给深度定制的专家用户使用的,不仅仅传入上诉条件,还要传入更为细致的es的设定参数。
单元测试和使用样例
▲单元测试和使用demo可以让使用者快速入门,能更清晰的看到用法,最好是复制一下,小改动就能使用
文档和代码注释详细清晰
合理的默认值+参数校验
▲比如mysql最大连接数,尽量在封装sdk的时候就限制掉,避免使用者对mysql了解不深而使用了错误参数,由于出问题的地方在mysql,所以很多问题在业务代码里是查询不到的,增加了排错的困难。
课程收获:
通过学习,在设计链接各种中间件的sdk的时候,就有了一些注意事项,这些规范将有助于开发更为完善的中间件sdk
这篇关于【金秋打卡】第6天 Go中间件集成学习-中间件sdk的设计考虑问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南