Java架构直通车——架构师所需要具备的技术栈与能力

架构师所需要的技术栈

在这里插入图片描述
首先,用户先通过前端来进行一个访问,这里前端可能用到了ios、android、H5和小程序等等。用户通过这些来发送请求,首先来到了我们的负载均衡。

这里就是Nginx,由于Nginx也是服务器,也会宕机,所以这里会有主备多台Nginx,通过使用lvs+keep alive做了这样一个主备,保证了Nginx不会宕机,就算宕机了也会有备用机给替换掉。

随后负载均衡器会把我们的请求处理后,发送到后面这一部分。
在这里插入图片描述
这一块其实就是我们的微服务了,就比如我们的系统包含了用户服务、商品服务、订单服务等等。服务会向外提供一些相应的接口,当然服务与服务之间也会提供通信接口。对于我们的微服务来讲,它自己本身就是一个系统,一个系统就会对应到一个相应的数据库。
在这里插入图片描述
对应微服务的,它会有用户数据库,商品数据库和订单数据库。每一个数据库,在用户请求查询非常庞大的时候,又会做一个主从的读写分离,以及分库分表等操作。
另外,在我们的应用层(微服务)和数据层(数据库)之间会有一个缓存,这个缓存我们会通过Redis进行构建,用户请求查询的数据,访问的时候也可以从Redis中去获取的,为数据库减轻一些负担。

再来看看微服务这块,服务也可以相应的调用一些公共资源,比如说推送啊、短信啊、邮件啊、又或者是其他第三方的库等资源。
在这里插入图片描述
调用的时候,我们往往会通过RabbitMQ等一些消息队列,也就是生产者消费者模式,来进行一个相应的解耦。

当然我们的整体架构是一个分布式的架构,需要去关注分布式锁、分布式会话、单点登陆、分布式事务、数据一致性、限流、分布式日志、幂等性等等。

再来看看,其实各个服务都会涉及到相应的文件。
在这里插入图片描述
比如说用户服务里面,会涉及到用户的头像上传,商品服务里涉及到商品图片的上传。通过一个分布式文件系统,我们所有的图片都可以保存到这样一个系统里面。

随后,分布式搜索引擎Elasticsearch,由于用户的请求查询是多样化的,在数据库查询中的模糊查询不太符合现在的检索需求,我们会通过一个ES来实现用户的检索,同时也可以为数据库分担一些检索查询的压力。

另外Kafka的一个日志收集,当我们的服务器到达上百台上千台的时候,每一个服务器都会有日志的产生,这个时候如何去管理日志呢,需要对日志进行搜集、监控和排错。在传统架构里,往往我们只需要打开tomcat,查看报了哪些错,不过一旦我们系统大量扩张,拥有很多服务器,就必须通过日志收集了。

最后我们还涉及到了docker容器化。此外,我们还会需要netty的一些相关知识,比如netty通信。
在这里插入图片描述
在我们的整个开发周期,我们当然会使用到一些相关的优化技术,比如jvm,tomcat,db的优化,这些都会有相应的优化手段。

扫描二维码关注公众号,回复: 8548854 查看本文章

架构师所需要的能力

  1. 技术全面,有广度。我们需要了解技术栈,遇到业务的时候,才能使用更匹配的技术。
  2. 关注前沿技术。
  3. 全局观、预判。 我们要有全局观,要会预判可能出现的问题,有Plan A、Plan B等等。
  4. 把控团队,忙而不乱。要学会管理。
  5. 系统分解与模块拆分。把业务进行分离,代码进行解耦,匹配团队。
  6. 指导和培训。
  7. 沟通和协调能力。
  8. 抽象、举例和画图。与技术和非技术人员交流的时候,就需要把技术、业务更精炼的解释给他人。
发布了364 篇原创文章 · 获赞 324 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/No_Game_No_Life_/article/details/103924753