7.常见 web 框架介绍

  1. 1.相比ruby on rails,laravel ,TP, 感觉go生态里的 web框架都很“简陋”。目前看来 goframe 设计的还不错,里面提到了大多 orm框架 有很多字符串的硬编码,不是很安全,曹大怎么看?
  2. 2.logger 打印规范,一个标准格式例子?日志过多会影响性能得厉害吗?
  3. 3.没有接触过微服务的小白, 如何入门? 老师有推荐的微服务入门书单?
  4. 4.Go 做 Web 的话,一般是怎么做热更新的呢?
  5. 5.依赖注入是怎样实现的呢?主要为了解决什么问题?
  6. 6.想问个题外话-面试题:如何做技术选型?
  7. 7.看过挺多微服务框架, 一直没决定选哪个框架进行深入,老22222较好?
  8. 8.sre是哪本书哇?应该是这本
  9. 9.分布式的接口限流一般都是怎么做的?
  10. 10.框架是具有普适性的吧?也能适应IM, 物联网这种行业业务么?
  11. 11.刚才说的etcd做服务注册服务发现有什么问题啊?
  12. 12.曹大后续会讲DDD嘛。Go怎么用DDD思想搭框架呀?
  13. 13.重启服务时,服务关了;但此时端口交给tcp 正在closed,重启时发现端口还是被占用,一般怎么处理?
  14. 14.Go框架中打日志是单独的协程负责吗?算是异步的吗?
  15. 15.怎么较为容易的提高团队的技术水平呢?
  16. 16.容器内的自适应限流应该怎么做?有啥开源的项目吗?如果没有的话,手撸一个有啥思路吗?
  17. 17.Go如果对外发布一些库,除了源码以外,有其他好的方案吗?
  18. 18.IDL管理的话,有什么成熟的套件可以使用么?
  19. 19.依赖反转的例子没太懂,可以用个代码说明下吗?就算用了interface,调用方还是要切换的吧?
  20. 20.cli 自动化生成代码模版这块,具体该如何实现呢?
  21. 21.改造 gorm logger 下的 Trace 方法, 通过 context.Context 注入 traceID 可以定位到具体的慢查询语句以及慢查询语句对应的请求, 这种改造 Trace 的方式是否值得?

1.相比ruby on rails,laravel ,TP, 感觉go生态里的 web框架都很“简陋”。目前看来 goframe 设计的还不错,里面提到了大多 orm框架 有很多字符串的硬编码,不是很安全,曹大怎么看?

  • goframe 认为企业级框架应该集大成,以单库维护依赖版本,避免业务出问题。
  • “order_id > “: “1”

2.logger 打印规范,一个标准格式例子?日志过多会影响性能得厉害吗?

  • 这个我们压测过,没有日志,比有日志快10~20%,如果用异步,非sugar模式的zap,可以快更多。如果硬盘很龊也不行。
  • 2021-01-02 00:00:23||[module_name]|| pb
  • for {log.Infof()}
  • 日志对性能影响极大,具体多大,需要压测,如果打的不好,性能降为 1/100 都有可能
  • logStr := a + b + c => fmt.Sprintf(“%v %v %v”) => p2 事故

3.没有接触过微服务的小白, 如何入门? 老师有推荐的微服务入门书单?

4.Go 做 Web 的话,一般是怎么做热更新的呢?

  • 代码里面要把预设的模式编码好,根据数据库里的配置做修改,govaluate,不太灵活
  • gopherlua,gopherjs — 不是特别稳定,没有见大公司有使用
  • go-plugin,很垃圾,基本没人用
  • wasm
  • viper,自己设计的话,搞一个简单的双 buffer 就可以

5.依赖注入是怎样实现的呢?主要为了解决什么问题?

  • 为了自动做变量绑定,少写一些初始化代码
  • wire、dig,复杂依赖,初始化的时候很麻烦,方便测试

6.想问个题外话-面试题:如何做技术选型?

  • 选什么,你和你的同事一定能维护得动
  • 其次,性能、功能指标能达到你们业务需求目标
  • 你选的这个方案不是冷门方案,未来也好招人
  • 选 star 多的,代码质量好的

7.看过挺多微服务框架, 一直没决定选哪个框架进行深入,老22222较好?

8.sre是哪本书哇?应该是这本

图片

9.分布式的接口限流一般都是怎么做的?

  • registry store [getOrder],访问量限制
  • 每个服务都订阅了自己,所以每个服务知道自己的实例数

10.框架是具有普适性的吧?也能适应IM, 物联网这种行业业务么?

  • websocket,在框架里很多也支持
  • IOT,mqtt 协议之类,涉及到存储,那还是需要一个简单的框架

11.刚才说的etcd做服务注册服务发现有什么问题啊?

  • cp,ap
  • etcd 挂了(网络分区),那你的服务就找不到其它服务,这种情况是不是可以接受的

12.曹大后续会讲DDD嘛。Go怎么用DDD思想搭框架呀?

  • 会讲,通用的思想可以借鉴
  • 教条的词汇没什么用,而且同事可能会反感

13.重启服务时,服务关了;但此时端口交给tcp 正在closed,重启时发现端口还是被占用,一般怎么处理?

  • 摘流,等待一段时间
  • kill -9
  • tcp_reuse?

14.Go框架中打日志是单独的协程负责吗?算是异步的吗?

  • 不一定,logger 实现不一定是异步的
  • logrus 记得是同步的

15.怎么较为容易的提高团队的技术水平呢?

  • 组织大家搞技术分享/读书会
  • 每周挑一天,组里人轮流来分享

16.容器内的自适应限流应该怎么做?有啥开源的项目吗?如果没有的话,手撸一个有啥思路吗?

  • 监控系统,agent <- metrics sdk,通过 metrics 查询本容器的性能指标,然后根据查到的性能指标来做限流
  • sentinel 代码、kratos v1 好像有自适应限流

17.Go如果对外发布一些库,除了源码以外,有其他好的方案吗?

  • go-plugin,不好用,main plugin 是同一个版本编译出来的才行
  • Go 在这方面目前还不太完善,只能源码发布

18.IDL管理的话,有什么成熟的套件可以使用么?

  • 公司内一般都是自研的。。
  • IDL - CI/CD 要打通
  • 同学提出可以参考 erda

19.依赖反转的例子没太懂,可以用个代码说明下吗?就算用了interface,调用方还是要切换的吧?

  • 调用方需要切换,但一般只需要改一下初始化代码就可以了
  • 如果有依赖注入方案的话,可能改一行配置就可以了
  • 切换过程不侵入到业务逻辑代码里的

20.cli 自动化生成代码模版这块,具体该如何实现呢?

  • func getOrderList(context.Context, , ) {
  • }
  • 约定好的目录,把代码放进去就可以了
  • ast 也可以用到

21.改造 gorm logger 下的 Trace 方法, 通过 context.Context 注入 traceID 可以定位到具体的慢查询语句以及慢查询语句对应的请求, 这种改造 Trace 的方式是否值得?

  • 方便定位问题的改进都是值得的

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lihuanjie113@gmail.com

×

喜欢就点赞,疼爱就打赏