SpringCloud

什么是微服务?

要想学习微服务,首先需要知道什么是微服务?为什么会有微服务?相信看完架构的发展史读者就会明白

架构发展史

单体应用架构

如图所示:将所有的模块,所有内容(页面、Dao、Service、Controller)全部写入一个项目中,放在一个Tomcat容器中启动适用于小型项目

优点:开发速度快,可以利用代码生成工具快速的开发一个项目

缺点:不易扩展,代码耦合度高,且不容错(当某部分出错后整个服务就会停止运行)

垂直架构

既然原来单体架构中代码耦合度高,不利于维护和运行,人们自然就想到将不同的内容分开。最简单合理的方式就是将系统按照功能划分成不同的模块,然后将各模块独立放入不同的Web容器中,这就形成了垂直架构

优点:代码耦合度降低,且不同模块之间可以独立运行。一旦某个模块压力过大,可以针对性的搭集群

缺点:模块之间有可能不是那么完全独立,导致实体类或者其他层代码不能复用,需要多出粘贴,不方便日后维护。如果直接通过HTTP调用又不是很合理。

分布式架构/分布式SOA架构

分布式架构顾名思义就是分散部署在不同的机器上的服务,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的架构。从开发的角度看就是Controller层(服务消费者)和Service层(服务提供者)分成不同的项目,部署在不同的服务器上,通过RPC(远程方法调用)来实现交互。阿里巴巴著名的Dubbo框架就是作为分布式架构的框架。一般推荐使用Zookeeper作为服务的注册中心,负责注册和发现服务的提供者,并供服务的消费者消费

微服务

微服务的提出者马丁·福勒关于微服务的论文中文翻译版

单体架构和微服务的比较图示:

微服务的核心就是将传统的一站式应用,根据业务拆分成一个个原子应用。彻底地去耦合,一个服务只做一件事情,从技术角度讲就是一个服务就是一个进程,可以单独启动或销毁,拥有独立的数据库。并且通过配置中心可以方便的切换数据库等。

优点:

  • 每个服务足够内聚,足够小,代码容易理解,一个服务可能就是专一的只干一件事。开发简单、开发效率提高
  • 微服务能够被小团队单独开发,这个小团队可以是由2到5人的开发人员组成
  • 微服务能使用不同的语言开发。易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins, Hudson, bamboo 。微服务允许你利用融合最新技术。
  • 微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。

缺点:

  • 开发人员要处理分布式系统的复杂性,会面临分布式事务、分布式一致性等问题
  • 多服务运维难度,随着服务的增加,运维的压力也在增大
  • 服务间通信成本变高

微服务的技术栈

微服务条目 落地技术 备注
服务开发 Springboot、Spring、SpringMVC
服务配置与管理 Netflix公司的Archaius、阿里的Diamond等
服务注册与发现 Eureka、Consul、Zookeeper等
服务调用 Rest、RPC、gRPC
服务熔断器 Hystrix、Envoy等
负载均衡 Ribbon、Nginx等
服务接口调用(客户端调用服务的简化工具) Feign等
消息队列 Kafka、RabbitMQ、ActiveMQ等
服务配置中心管理 SpringCloudConfig、Chef等
服务路由(API网关) Zuul等
服务监控 Zabbix、Nagios、Metrics、Spectator等
全链路追踪 Zipkin,Brave、Dapper等
服务部署 Docker、OpenStack、Kubernetes等
数据流操作开发包 SpringCloud Stream(封装与Redis,Rabbit、Kafka等发送接收消息)
事件消息总线 Spring Cloud Bus

什么是Spring Cloud

Spring Cloud 是实现微服务思想落地开发的一整套技术的集合

Spring Cloud和Dubbo的区别图解

Spring Cloud开发者文档中文版:

https://springcloud.cc/spring-cloud-dalston.html

Spring Cloud中国社区

http://springcloud.cn/

Spring Cloud中文网

https://springcloud.cc/

Spring Cloud学习之-什么是Spring Cloud?的更多相关文章

  1. Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目

    Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...

  2. SSM(spring mvc+spring+mybatis)学习路径——1-1、spring入门篇

    目录 1-1 Spring入门篇 专题一.IOC 接口及面向接口编程 什么是IOC Spring的Bean配置 Bean的初始化 Spring的常用注入方式 专题二.Bean Bean配置项 Bean ...

  3. Spring Boot学习(一)——Spring Boot介绍

    Spring Boot介绍 Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式 ...

  4. Spring Framework 学习笔记——核心技术之Spring IOC

    Spring Framework 官网文档学习笔记--核心技术之Spring IOC 官方文档 spring-framework-5.3.9 1. Spring Framework 核心技术 1.1 ...

  5. spring boot 学习入门篇【spring boot项目的搭建以及如何加载jsp界面】

    [ 前言]  Spring Boot 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置, ...

  6. Spring框架学习(7)spring mvc入门

    内容源自:spring mvc入门 一.spring mvc和spring的关系 spring mvc是spring框架提供的七层体系架构中的一个层,是spring框架的一部分,是spring用于处理 ...

  7. Spring框架学习(1)Spring简介

    内容源自:Spring 框架简介 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序 ...

  8. spring Boot 学习(六、Spring Boot与分布式)

    一.分布式应用在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用 全栈的Spring,Spring Boot+Spring Cloud 分布式系统: 单一应用 ...

  9. Spring框架学习(4)spring整合hibernate

    内容源自:spring整合hibernate    spring整合注解形式的hibernate 这里和上一部分学习一样用了模板模式, 将hibernate开发流程封装在ORM层提供的模板类Hiber ...

随机推荐

  1. linux alloc_pages 接口

    为完整起见, 我们介绍另一个内存分配的接口, 尽管我们不会准备使用它直到 15 章. 现 在, 能够说 struct page 是一个描述一个内存页的内部内核结构. 如同我们将见到的, 在内核中有许多 ...

  2. 2018-2-13-win10-uwp-判断设备类型

    title author date CreateTime categories win10 uwp 判断设备类型 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 1 ...

  3. Python9_类

    类的基础知识 属性:类变量.实例变量.方法:初始化方法 __init__  //初始化方法不是必须的:其他方法: //类的定义class Employee: empCount = 0 //类变量,有些 ...

  4. 38.CSS

    转载:https://www.cnblogs.com/yuanchenqi/articles/5977825.html css概述 CSS是Cascading Style Sheets的简称,中文称为 ...

  5. Oracle和可视化视图工具教程

    Oracle数据库安装教程 作者:黑小子-余 Qq:2931445528 微信:Y2931445528 可以找我,我有Oracle数据库安装包及工具   命令: Sqlplus /nolog Conn ...

  6. java_回文检测

    package bao; import java.util.Scanner; public class Work { public static boolean digui(String str1,i ...

  7. DEVOPS技术实践_18:Jenkins的Pinpeline对于参数的使用

    因为最近使用Pipeline声明式语法构建项目,但是最近项目的参数设置较多,特地的来学习一下关于参数的调用和测试,主要式从一个大神那里学习的,结尾回贴上大神的博客链接 1 构建一个pipeline项目 ...

  8. 跟我一起学QT_QT标准对话框_字体选择框

    标准对话框 QT的标准对话框分为以下几种 颜色对话框 文件对话框 字体对话框 输入对话框 消息对话框 进度对话框 错误信息对话框 向导对话框 字体选择框 字体选择框位于 QFontDialog 类中 ...

  9. $NOIp$做题记录

    虽然去年做了挺多了也写了篇一句话题解了但一年过去也忘得差不多了$kk$ 所以重新来整理下$kk$ $2018(4/6$ [X]积木大赛 大概讲下$O(n)$的数学方法. 我是从分治类比来的$QwQ$. ...

  10. 洛谷$P2824\ [HEOI2016/TJOI2016]$ 排序 线段树+二分

    正解:线段树+二分 解题报告: 传送门$QwQ$ 昂着题好神噢我$jio$得$QwQQQQQ$,,, 开始看到长得很像之前考试题的亚子,,,然后仔细康康发现不一样昂$kk$,就这里范围是$[1,n]$ ...