微服务(不是一个框架 而是一种架构思想),是著名的 oo (面向对象, ObjectOriented )专家 Martin Fowler 提出来的,它是用来描述将软件应用程序设计为独立部署的服务的一种特殊方式。
最近两年,微服务在各大技术会议、文章、书籍上出现的频率已经让人意识到它对于软件领域所带来的影响力。微服务架构的系统是个分布式系统,按业务领域划分为独立的服务单元,有自动化运维、容错、快速演进的特点,它能够解决传统单体架构系统的痛点,同时也能满足越来越复杂的业务需求。
就是将一个大的应用,拆分成多个小的模块,每个模块都有自己的功能和职责,每个模块可以进行交互,这就是微服务
对于微服务,业界没有严格统一的定义,但是作为“微服务”这名词的发明人,Martin Fowler对微服务的定义似乎更具有权威性和指导意义,他的理解如下:
凡事都有两面性,微服务也不例外,微服务相对于单体应用来说具有很多的优势,当然也有它
的不足,主要体现在如下方面:
微服务的复杂度
分布式事务问题
服务的划分(按照功能划分 还是按照组件来划分呢) 分工
服务的部署(不用自动化部署 自动化部署)
开闭原则 单一原则 6 大设计原则 架构设计和代码设计思路一样的
Spring Cloud 作为 Java 语言的微服务框架,它依赖于 Spring Boot,有快速开发、持续交付和容易部署等特点。 Spring Cloud 的组件非常多,涉及微服务的方方面面,井在开源社区 Spring 和 Netflix、 Pivotal 两大公司的推动下越来越完善,如今 alibaba 也加入到其中。 spring 官方 netflix alibaba Spring Cloud 在开发部署上继承了 Spring Boot 的一些优点,提高其在开发和部署上的效率。
Spring Cloud 的首要目标就是通过提供一系列开发组件和框架,帮助开发者迅速搭建一个分布式的微服务系统。
Spring Cloud 是通过包装其他技术框架来实现的,例如包装开源的 Netflix oss 组件,实现了一套通过基于注解、 Java 配置和基于模版开发的微服务框架。 Spring Cloud 提供了开发分布式微服务系统的一些常用组件,例如服务注册和发现、配置中心、熔断器、远程调用,智能路由、微代理、控制总线、全局锁、分布式会话等。
A B C D E **F G H** I(2020 版) Hoxton.SR12 2.3.12.RELEASE
https://start.spring.io/actuator/info
服务的注册和发现。(eureka,nacos,consul)
服务的负载均衡。(ribbon,dubbo)
服务的相互调用。(openFeign,dubbo)
服务的容错。(hystrix,sentinel)
服务网关。(gateway,zuul)
服务配置的统一管理。(config-server,nacos,apollo)
服务消息总线。(bus)
服务安全组件。(security,Oauth2.0)
服务监控。(admin) (jvm)
链路追踪。(sleuth+zipkin)
SpringCloud 就是微服务理念的一种具体落地实现方式,帮助微服务架构提供了必备的功能
目前开发中常用的落地实现有三种:
Dubbo+Zookeeper 半自动化的微服务实现架构 (别的管理没有)
SpringCloud Netflix 一站式微服务架构
SpringCloud Alibaba 新的一站式微服务架构
三大公司
Spring Netflix Alibaba
因篇幅问题不能全部显示,请点此查看更多更全内容