1.可以讲讲面试过程中的架构内容呢
- 高可用-HA,搞多活,稳定性 SRE 方法论
2.公司框架要不要搞goroutine pool
- 压测看看数据
- findrunnable, schedule
- 整体吞吐量会好一点
3.学了 go 的框架感觉有几分laravel 感觉,如果要做go迁移 ,想问下曹大有哪些需要注意的点?
- 以强类型的方式来写代码,不要用 map[string]interface{}
- 要多学一点并发知识
4.公司现在不是搞的这套微服务架构方式,这种之后出去换工作就吃很大的亏吗?
- 《building microservices》 ==> 中文翻译看一下https://item.jd.com/11917800.html(中文扔了一本电子书在coding的第11课课件目录中)
- microservices.io
- https://docs.microsoft.com/en-us/azure/architecture/
5.中台如何解决瞬发流量太大
- 稳定性
- 自动扩容,限流(在端上也会有一些逻辑 && back pressure)
- 架构上的改造,同步改异步
6.后续有压测这些的实践教学嘛,没啥经验。
- 单机单模块的有
- 全链路的不太好搞
7.刚刚说的 api 多活是怎么做?可以说一下简单思路吗?
- api 是无状态
- 无状态在不同的城市多部署一些集群就 可以了
- A 机房的 A 服务 -> A 机房的 B 服务,如果 A 机房的 B 服务挂了,那么 A 能不能去 call B 机房的 B 服务(切流操作:人工,自动切)
8.交易系统先写缓存再入库,有经验教训或案例参考吗
- 我见的不多。。。
- 公司内部,如果没有分布式事务框架,你就要考虑先写订单详情,还是先写订单;
- 抢单的锁,也是要 mysql 和 redis 协作的,有一些顺序问题
- seata-go
- https://rocketmq.apache.org/docs/transaction-example/#:~:text=Application-,What%20is%20transactional%20message%3F,message%20can%20be%20performed%20atomically.
- mysql,后台有一个补偿的循环,每 5min 跑一次,看是不是最近有一些流程需要补偿
9.公司项目上了K8s 是不是就没必要 单独配置 注册中心了
- 你如果新上 k8s 集群,直接用 k8s 的功能可以
- 上了 k8 也要考虑历史,已经在用配置中心,你这个迁移没那么好做
- https://kubernetes.io/docs/concepts/configuration/configmap/
10.架构设计有相应的书籍推荐吗?除了上面推荐的微服务书籍
- grokking system design
- DDD 社区的书
11.go分布式任务调度有什么好的吗?
12.旧的单体项目有使用 time.Ticker 定时任务, 改造成多节点无状态服务具体是什么思路呢?
- 自己 cron job 单独建一个服务去管理,这些 job 都维护在数据库里
- 跨机房的,可能要和 etcd 结合设计
- 有的服务设计把定时任务存在 etcd
13.能不能讲解下跨机房服务设计? 延迟解决等? 遇到的问题?
- 两地三中心、三地五中心、单元化
- 一般大多数针对外部服务的访问,都尽量走本地
- 涉及到 topic 订阅和消息延迟的,这种在架构设计的时候就要考虑到延迟
14.旧有c /cpp项目改造golang,算法部分需要用c,cgo坑太大有什么好的方案
15.c2goasm,我没有在生产环境中使用过,hack 式的优化,不是很推荐在生产中用。除非逼不得已。
16.慢必赔–单独开发一个业务服务,订阅上游的订单创建 topic,每 5min 从 db 里扫描出快要过期的事件,之后如果超时,就给用户发券。
17.要不我们过一下GopherChina上比较好的技术分享吧,哈哈哈哈
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lihuanjie113@gmail.com