image-20210209142005596.63ff8834

整体架构为前后端分离架构

  • 前端请求会通过 负载均衡器 分发到后端微服务
    这里的负载均衡器使用 lvs + keepalive + nginx 主备实现
  • Spring cloud 微服务
  • Redis 缓存集群
  • 数据库
  • 公共资源
    如短信、邮件、物流等,一般通过 MQ 异步调用

在分布式系统中,就需要考虑:

  • 分布式锁:解决一些超卖等问题
  • 分布式会话:http 请求是无状态的,我们的系统是分布式系统,所以需要准备分布式会话
  • 单点登录:由于是分布式会话,在一个系统登录之后,需要让其他系统也能直接使用
  • 单点登录:由于是分布式会话,在一个系统登录之后,需要让其他系统也能直接使用
  • 等等

另一部分:

  • 分布式文件系统
    这些子系统都有很多使用到图片等文件的场景,比如用户头像,商品图片等
  • Elasticsearch
    为用户提供多样性的搜索
  • kafka 日志收集
    当服务器到达上百、上千时,如何管理这么多服务的日志呢
  • docker 容器化、netty 通信、优化技术
  • 读写分离、主从同步、分库分表、分布式 ID
    以上是一些大企业中的一些技术栈。

架构师需要具备的能力

  • 技术全面、有广度
    需要了解更多技术,使用更合适更匹配的技术选型,来实现和解决问题
  • 关注前言技术
    可以通过阅读一些英文咨询来获取最新的技术信息
  • 全局观、预判
    对各个业务点有全局的掌控
  • 把控团队,忙而不乱
    技术担当、会管理、会管人,做到人多而不乱
  • 系统分解与模块拆分
    拆分与解耦是最基本最常见的一个模式,很好的把业务分离,才能很好的把代码解耦,在微服务阶段可以得到体现
  • 指导与培训
    指导和培训新人
  • 沟通与协调能力
    架构师也是一个管理者,需要与老板进行沟通,还会和下属进行沟通,合格的架构师会综合考虑上下级的想法,才能很好的做出一个决策
  • 抽象、举例、画图
    就是在和不懂技术的老板或则技术能力不够的开发沟通的时候,需要多抽象、多举例、多画图的方式,能让他们明白
  • 软技能
    偏向项目管理,团队协作、团队凝聚力,比如可以组织聚餐团建、爬山活动之类的。
    只要在职场,姿态(拍马屁)和城府一定是要有的,所谓有人的地方就有竞争。
  • 谈判能力:体现在沟通上
    如下属离职,沟通留下来,等等