轻量级微服务架构【读书笔记1】

1. 为什么要微服务架构(Why)

 原因:传统的应用架构不合理,产生了新的架构模式。

 1.1 传统应用架构的主要问题(Problems)

  当一个系统中包含A、B、C三个业务模块,通过监控程序发现A和B累计消耗系统资源的20%,C却要占用80%时,系统运行一段时间后,C业务将会成为系统的瓶颈,从而降低系统的性能。 

 1.2 解决传统应用架构的问题(Solutions)

  一般来看,只需要复制同样一份程序,并部署到另一台服务器上,只不过多台服务器上方通过负载均衡器将应用进行“水平扩展”。当请求资源时,先经过负载均衡器,通过路由算法(如轮询或哈希),将请求转发到后面的具体应用服务器上,这种方式也被成为反向代理。

 1.3 其他问题(Others)

  • 系统资源浪费(1.1中提到的)
  • 部署效率太低(如果修改代码,需要部署整个应用)
  • 技术选型单一(只能用一种语言)

2. 什么是微服务架构(What)

 2.1 概念

  应用满足一下要求,具体:

  • 根据业务模块划分服务种类
  • 每个服务可独立部署且项目隔离
  • 通过轻量级 API 调用服务
  • 服务需保证良好的高可用性

 2.2 微服务交付流程

  使用微服务架构开发应用,实际上是对一个个微服务进行设计、开发、测试、部署,每个服务之间没有彼此依赖。

3. 微服务有哪些特点和挑战

 3.1 特点

  • 微小度颗粒(根据业务功能来划分)
  • 责任单一性
  • 运行隔离型(每个服务相互隔离,且互不影响)
  • 管理自动化

 3.2 挑战

  • 运维要求较高(自动化技术来部署,对微服务进行有效的监控,保障系统的高可用性)
  • 分布式复杂性(微服务本质是一个分布式架构,对分布式系统而言,网络延迟,系统容错,分布式事务)
  • 部署依赖较强(业务复杂的情况,可能多个服务来共同完成一件事,服务之间没有相互调用,但可能会有调用的顺序性要求)
  • 通信成本较高(服务是隔离在自己的进程中运行的,从客户端调用微服务,需要跨进程进行调用,而进程间一定比进程内的调用更消耗资源,带来通信成本上的开销)

4. 如何搭建微服务(How)

 4.1 微服务技术选型

  使用 Spring Boot 作为微服务开发框架,其拥有嵌入式 Tomcat,可直接运行一个jar包来发布微服务,在发布微服务是,可连接ZooKeeper来注册微服务,实现“服务注册”。实际上ZooKeeper中有一个名为ZNode的内存树桩模型,树上的节点用来存放微服务的配置信息。使用Node.js处理浏览器发送的请求,在Node.js中连接ZooKeeper,发现服务配置,实现“服务发现”。通过Node.js将请求转发到Tomcat上,实现“反向代理”。此外,Node.js原生也提供了集群特性,可确保高可用性。为实现微服务自动化部署,可以通过Jenkins搭建自动化部署系统,并使用Docker将服务容器化封装。

  

  1)使用Jenkins部署服务

  2)使用Spring Boot 开发服务

  3)使用Docker封装服务

  4)使用ZooKeeper注册服务

  5)使用Node.js调用服务

  Spring官方在Spring Boot的基础上,封装了Netflix相关组件,提供一个名为Spring Cloud 的开源项目。

猜你喜欢

转载自www.cnblogs.com/zacky31/p/8930260.html
今日推荐