Golang Go语言中要想成为架构师需要掌握什么技能?

这几天 app 老是转圈( tornado 开发)领导天天问我咱们架构行不行,要不要换语言重构。 我认为的后端架构不就是懂这些吗: k8s+docker+nginx+supervisor+gunicorn+ansible 部署项目 python 、go 开发项目 redis 、rabbitmq 队列 mysql 、pg 、elk 、cassandra 数据库 etcd 配置中心

还有什么是我需要掌握的? (其实我觉的我欠缺的是系统的业务架构:比如 分库分表、分布式事务、内存、cpu 的调优上。) .....

其实我们的并发不太大,但是就是数据量大了,以前写的慢查询比较多。

nginx 错误日志:recv() failed (104: Connection reset by peer)

nginx 配置如下: upstream doctor_up { server 127.0.0.1:8400; server 127.0.0.1:8401; server 127.0.0.1:8402; server 127.0.0.1:8403; server 127.0.0.1:8404;

}

找了两天发现,nginx 打印错误都是在同一个端口上。而且顺着错误往上找在之前都会出现好几个请求访问时间 30s 左右。怀疑是不是写入数据的时候锁表,导致查询卡住,然后后台服务端口堵塞。nginx RST 连接 close 。 ============= [ pad ] 转圈问题处理方案===========

  1. [后端] nginx 连接数调高、buffer 缓存调大、keepalive 加了长连接
  2. [后端] 增加后台服务进程数
  3. [后端] 慢接口进行读写分离优化(分析错误日志,找到转圈时刻慢接口)
  4. [后端] 增加自动访问接口提醒功能(每分钟)
  5. [后端] 增加了调第三方服务超时时间
  6. [前端] 优化了超时时间 30 秒改 10 秒
  7. [前端] 优化了页面快速切换的重复请求

Golang Go语言中要想成为架构师需要掌握什么技能?

更多关于Golang Go语言中要想成为架构师需要掌握什么技能?的实战教程也可以访问 https://www.itying.com/category-94-b0.html

8 回复

性能问题要先看是前端的问题还是后端的问题。后端的话,接口响应时间能不能都控制在 100ms 以内?压测做一下看看服务器性能能不能挺得住用户量。。。一般性能问题和架构关系不大。

更多关于Golang Go语言中要想成为架构师需要掌握什么技能?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


后台每个 api 都需要有详细日志记录,这样哪个时间段有问题好查。 监控系统对接日志服务,每周把慢的接口统计出来, 让后台改。 用户少,根本不需要什么构架, 一个 java 进程就搞定了, 哪需要部署这么多东西,东西越多出错的概率越大,人力成本也越大。

软考历年架构师真题看一下,有一说一里面很多题都挺潮的。

架构师关注更多的是边界和分离点,降低团队间、不同技术体系间的耦合度,做适合的选择和设计。在某个领域的深度不一定比工程师高,但通的要比较多,慎重引入技术体系,不做不必要的架构复杂度增长。

现实情况是很多公司的架构师都被当成疑难杂症老中医使,只要是没人能搞或者没人愿搞的问题都扔给他。

看起来你应该需要加个监控

如果是单服务,按接口加上请求时间,排队时间和 qps 的监控

如果是多服务,http/grpc/thrift 的每个接口也都要加上监控。

有了监控以后,看看哪些接口 qps 高 && 请求时间慢,针对接口优化就好。

接口优化也简单,

1. 看看 API 有没有返回多余的字段,能删就删
2. 看看数据库查询是不是没命中索引,改查询条件或加索引
3. 加缓存
4. 看看一个 http 请求内是否重复了多个 rpc 请求,试着合并一下
5. 如果一个请求的逻辑实在是复杂,看看能不能改交互,把逻辑改成异步的,实际功能在 mq 里面做。

这是性能角度的考虑,还有资源方面的考虑,服务占用的 CPU/内存

建议直接上 k8s ,然后利用 k8s 提供的监控指标,查看每个 deploy/job 占用的资源。

好像 架构师 确实都是疑难杂症解决工

架构师是 面 比较全 ,每个人都有擅长的
分库分表 指的是 用 sharding 这种分区吗 还是 横 着切 ,我一般按区间
分布式事务 TCC 现在 那个 DTM 用的多吗

要想成为Golang架构师,需要掌握以下核心技能:

  1. 精通Golang语言:掌握Golang的基础语法、数据类型、函数等,并深入理解并发编程、协程等特性,能够编写高效、可维护的代码。
  2. 熟悉框架与库:熟悉常用的Golang框架(如Echo、Gin、gRPC等),了解框架的体系结构和特性,以及如何使用路由、中间件和数据绑定等功能。同时,需要熟练使用常用的第三方库,以满足业务需求。
  3. 数据结构与算法:熟练掌握常见的数据结构和算法,能够优化代码性能,提升软件质量。
  4. 系统设计与架构:具备扎实的软件工程知识,包括设计模式、面向对象编程等,能够设计结构清晰、易于维护的系统架构。
  5. 并发与性能优化:利用Golang的并发特性,设计并发安全的应用程序,并具备性能优化的能力,能够解决高并发、海量请求下的性能瓶颈。
  6. 技术视野与领导力:关注技术发展趋势,推进先进技术实践的研究及在业务中落地。同时,需要具备良好的团队领导力和沟通能力,能够带领团队完成关键系统的设计以及优化。

综上所述,成为Golang架构师需要不断学习和实践,保持对新技术的敏感度,并具备扎实的编程基础和技能。

回到顶部