1.怎样做插件式架构设计,有什么比较好的的例子和资料教程吗?
- https://github.com/mosn/api/blob/master/protocol.go
- go-micro
- interface
2.有什么比较好的架构设计工具软件和资料吗?
- plantuml
- DDD

3.被许多微服务依赖的公共组件库更新比较麻烦, 主要是推动业务方使用新版本比较困难, 导致线上版本不统一, 请问有没有比较好的解决办法或思路 ?
- 这个问题想想为什么会有 service mesh,就可以想明白了
- 把你的库做成动态加载(Go 里不太好用,plugin 难用
4. 工作流引擎对编写业务流程来说起了一个怎样的作用?什么场景下适合上工作流引擎?
- 比如公司每天有 50w 投诉
- 这些投诉有 3000 个分类
- 每个分类有单独的处理流程
5. 微服务的起点是不是项目需要大一点,一般个人的项目使用微服务是否容易放弃?有什么办法让个人项目用起微服务吗?
- 个人用的话
- 微服务其实没有特别具体粒度的定义
- consul 注册中心
- nsq/nats 轻量级消息队列
- seata
- k8s
8. 微服务架构实践中,在因为bug或业务不周原因产生异常数据,修复过程需要依赖多服务业务逻辑,在修复过程中会产生大量请求、大量调用链拖垮服务,这种场景有没有好的实践推荐
- 修数据一定注意对上下游系统的影响
- 注意限流
- juju/ratelimit
7.分布式系统中如果使用多级缓存,有什么办法实现数据一致性?
- 个人感觉这种场景对一致性要求肯定不高。。。(不是特别确定
8.好像课上意思是我们系统都是业务系统,那领域知识的不需要做成系统和服务吗?
- 领域知识是要看情况的,比如说推荐系统:分推荐架构、机器学习(hive,离线在线训练,sklearn,tensorflow,sqlflow)
- 运营,一开始手工运营,但是公司长的以后,这些手工手段也需要沉淀成为系统(专家系统
- 像一些数据库调优(专家系统,机器
- 医生诊断,辅助工作的系统和硬件
9. 谷歌工程方面的论文一般发布在哪里可以看?
10. 问个八股文:aio是啥原理
- aio_write,记得好像是内核帮你做数据读写,ready 了再通知
- epoll,-> fd 可读 read —- read 过程还是你调用 read 的时候做的
11. 想问下数据归档有没有什么好的方式?
- 一般是 DBA 有专门的平台和脚本
- 依据 db 里的某个字段,如 update_time 来做删除
12. 有什么权限控制开源项目、依赖库推荐?
13. 网关转发时的业务权限(SSO)一般怎么做,每个服务自己实现吗,和网关权限有什么区别?
- cookie
- 不确定是不是这个。。
14. 推荐下DDD Go实现的开源项目?
- https://www.damianopetrungaro.com/posts/ddd-using-golang-strategic-design/
- https://github.com/8treenet
15. 从这个pprof看服务是不是正常的? 我看gcBgMarkWorker也占用了三分之一

- 这个应该是需要优化的,正常情况下 gc 的 CPU 占用会被约束在 25%,超过 25% 的话,你的应用协程经常被征用去做 mark assist,这种情况你的应用延迟会变高
16.怎么样做异步的opentracing?比如当中有调用有队列
- https://www.confluent.io/blog/integrate-kafka-and-jaeger-for-distributed-tracing-and-monitoring/
- https://github.com/Vonng/ddia/blob/master/ch4.md
17. 线上开 pprof,后台的内存分配是一直在记录吗?cpu, goroutine 这些是拉的时候才记录吗?
- heap —> inuse: 正在使用;alloc:历史总量;
- objects:对象数;space:内存空间;
- CPU:-seconds,采的是这段时间的 CPU 使用情况
- goroutine:瞬时的值,会变化的。
- https://dave.cheney.net/high-performance-go-workshop/dotgo-paris.html
- http://localhost:3333/debug/pprof/heap?debug=1
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lihuanjie113@gmail.com