微服务

自动化部署,端点智能化,语言和数据的去中心化控制。
微服务将一个单一应用程序开发为一组小型服务,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制。可以去中心化的数据库,去中心化的基础设施。


Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC(Romote Procedure Call,远程过程调用) 分布式服务框架,现已成为 Apache 基金会孵化项目。
使用 Dubbo 可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场需求。


RPC是不同机器上的方法可以互相调用;soa又叫服务治理,它拆分了不同的功能单元,并通过定义良好的接口和协议联系起来SOA实现微服务架构

应用架构的发展路线:

单一应用架构(ORM框架)——》垂直应用架构(MVC)——》分布式服务架构(RPC)——》流动计算架构(SOA)

为了把:
1、界面+业务逻辑的实现分离
2、应用不可能完成脱离,应用之间需要交互
采用分布式的服务架构;(RPC)

引入调度中心,实施管理服务集群,SOA


Dubbo原理


【provider:服务提供者;consumer:调用远程服务的服务消费方;registry:服务注册中心】
  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
在我们的项目中,注册中心用的zookeeper
实习中没有monitor模块(监控中心)

灰度发布: 一个服务原本在100个服务器上跑,升级业务后怕不稳定,xianxuan

Dubbo 的服务治理图



Dubbo内置了Spring Container,Jetty Container,Log4j Container
默认使用Zookeeper作为注册中心

Dubbo与Spring Cloud的区别

Dubbo 是阿里开源的一个 SOA 服务治理解决方案,文档丰富,在国内的使用度非常高。
Dubbo 的定位始终是一款 RPC 框架,而 Spring Cloud 的目标是微服务架构下的一站式解决方案。

  • Spring Cloud 来源于 Spring,质量、稳定性、持续性都可以得到保证。
  • Spirng Cloud 天然支持 Spring Boot,更加便于业务落地。
  • Spring Cloud 发展得非常快,从开始接触时的相关组件版本为 1.x,到现在将要发布 2.x 系列。
  • Spring Cloud 是 Java 领域最适合做微服务的框架。
spring cloud的架构:


Dubbo Demo


Zookeeper安装


cd D:\yuan\zookeeper-3.4.14.tar\zookeeper-3.4.14\bin
zkServer.cmd


启动客户端连接:
zkCli.cmd 127.0.0.1:2181