springCloud/印象

面向服务

SOA代表面向服务的架构,将应用程序根据不同的职责划分为不同的模块,不同的模块直接通过特定的协议和接口进行交互。这样使整个系统切分成很多单个组件服务来完成请求,当流量过大时通过水平扩展相应的组件来支撑,所有的组件通过交互来满足整体的业务需求。

面向服务的设计,往往需要ESB(Enterprise Service Bus,企业服务总线)产品来充当基础设施。ESB采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务的级别上动态的互连互通。 ESB是一种在松散耦合的服务和应用之间标准的集成方式。

在其内部设计和实现中,通常会应用到一些经典的架构模式,例如:Broker模式、消息总线模式、发布订阅模式等。

微服务

微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制。

  • 围绕业务能力组织 / Organized around Business Capabilities

康威定理:Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations。设计系统组织的设计产出受限于该组织的沟通结构。

  • 是产品不是项目 / Products not Projects

  • 去中心化 / Decentralized

  • 进化式设计 / Evolutionary Design

  • 基础设施自动化 / Infrastructure Automation

springboot

Spring Boot是一个简化Spring使用的框架,可以使用少量的配置快速创建一个基于Spring的项目。Spring Boot主要有如下核心功能:

  • 独立运行的Spring项目。

  • 内嵌Servlet容器。

  • 提供starter简化Maven配置。

  • 自动配置Spring

  • 提供生产就绪型功能,如指标,健康检查和外部配置

springCloud

springCloud为什么被需要

Spring Cloud的开发团队专注于企业级开源框架的研发,不论是在中国还是在世界上使用都非常广泛,开发出通用、开源、稳健的开源框架是他们的主业。

Spring Cloud是微服务架构的生态环境,考虑到了微服务的各个方面。

Spring Cloud的社区热度非常好,问题修复也非常及时,未来会更加完善和稳定。

Spring Cloud也可以较好的兼容python、php等其他语言开发的微服务。因为采用RESTful。

Spring Cloud与Docker可以完美组合使用。

springCloud现状前景

知名互联网公司都已经使用了Spring Cloud,但都是小规模或者某个团队在使用。

针对与中小企业,使用springCloud优势明显,熟悉spring/springboot能很快上手。

阿里推出了spring cloud alibaba。

springCloud架构

springCloud模块

网关:Zuul,提供动态路由,监控,弹性,安全等边缘服务的框架

负载:Ribbon,有多种负载均衡策略可供选择

容错:Hystrix,断路器

配置:Spring Cloud Config,统一配置管理

总线:Spring Cloud Bus,可与Spring Cloud Config联合实现热部署

发现:Eureka,微服务的注册与发现

调用:Feign,一种声明式、模板化的HTTP客户端

跟踪:Spring Cloud Sleuth

日志:日志收集工具包

Docker

spring-cloud-alibaba

基础概念

service-id or instance-id

  • 作为服务提供者唯一标识,消费端调用时使用。
@FeignClient(name= "spring-cloud-producer")
public interface HelloRemote {

    @RequestMapping(value = "/hello")
    public String hello(@RequestParam(value = "name") String name);


}
复制代码
  • Ribbon负载均衡标识
restTemplate.getForObject("http://spring-cloud-producer/hello", String.class);
复制代码

actuator

Spring Boot 的 Actuator 提供了很多生产级的特性,比如监控和度量Spring Boot 应用程序。Actuator 的这些特性可以通过众多 REST 接口、远程 shell 和 JMX 获得。

主要rest接口

HTTP 方法 路径 描述
GET /autoconfig 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过
GET /configprops 描述配置属性(包含默认值)如何注入Bean
GET /beans 描述应用程序上下文里全部的Bean,以及它们的关系
GET /dump 获取线程活动的快照
GET /env 获取全部环境属性
GET /env/{name} 根据名称获取特定的环境属性值
GET /health 报告应用程序的健康指标,这些值由HealthIndicator的实现类提供
GET /info 获取应用程序的定制信息,这些信息由info打头的属性提供
GET /mappings 描述全部的URI路径,以及它们和控制器(包含Actuator端点)的映射关系
GET /metrics 报告各种应用程序度量信息,比如内存用量和HTTP请求计数
GET /metrics/{name} 报告指定名称的应用程序度量值
POST /shutdown 关闭应用程序,要求endpoints.shutdown.enabled设置为true
GET /trace 提供基本的HTTP请求跟踪信息(时间戳、HTTP头等)

eureka

config

zuul

猜你喜欢

转载自juejin.im/post/5c650e4df265da2dc37b13fa