简单聊聊java架构的演进

架构演进:

  • 单体架构:All In One。
  • 多机部署:将程序和数据库已经存储文件系统单独的部署。
  • 集群部署:将程序部署多个。
    • 问题1:用户的请求到底要发送到哪台机器上。 - Nginx
    • 问题2:Session中的数据无法共享。 - Redis
    • 问题3:对于一些热点数据的查询,可能会导致数据库的宕机。 - Redis
    • 问题4:搜索数据,导致索引失效,全盘扫描,可能会导致数据库的宕机。 - ElasticSearch
  • 垂直架构:将功能模块单独的分离出来,自己部署自己的,不交互。
  • 分布式架构:将功能模块单独的分离出来,独立部署,对外提供网络访问的接口。
    • Dubbo:采用RPC的通讯方式。
    • SpringCloud:采用Http的通讯方式。
    • 问题1:服务和服务之间异步通讯。 - RabbitMQ。
    • 问题2:服务和服务之间相互通讯需要通过ip:port去访问,项目维护大量ip:port很麻烦。 - Eureka
    • 问题3:服务和服务之间通讯需要负载均衡。 - Robbin
    • 问题4:简化服务和服务之间通讯,采用面向接口的方式。 - Feign
    • 问题5:线程的隔离,服务的降级,断路器。 - Hystrix。
    • 问题6:后台服务提供统一的入口。 - Zuul
    • 问题7:统一的配置中心,管理所有服务的配置文件。 - Config
  • 微服务架构:
    • 就是分布式架构的一种。
    • 微服务架构就是一个风格,没有统一的标准。
    • 将一个完整的项目,拆分成多个微小的服务。
    • 每个服务可以独立部署。
    • 支持多语言开发。
    • 采用Http的方式进行通讯。
  • 服务越多,维护的成本越高。 - Docker。
  • 传统的功能再分布式的环境下失效了。
    • 分布式锁,分布式事务,分布式任务。

你可能感兴趣的:(java,后端)