一、什么是微服务

微服务是一种架构风格,是一种架构设计方式,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

二、为什么需要微服务

传统开发模式下,绝大多数的web应用都是单体架构的风格来进行构建,这就使得所有的接口,业务逻辑层,数据持久层全部都被打包在一个web应用中,并且布置在一台服务器上,使得不同的模块之前也高耦合在一起,这种开发模式使得多团队协作开发的开发成本极高。

三、单体应用存在的问题

* 随着业务的发展,开发变得越来越复杂

* 对某单一功能进行修改时,需要对整个系统进行打包部署

* 多个团队同时对数据进行操作管理,容易产生安全漏洞

* 各模块都使用相对统一的技术进行开发,各个模块很难根据实际情况选择更加合适的技术框架,系统的延展性比较低。

* 模块间耦合度高,新人上手比较费时

*分布式、集群*

集群:一台服务器无法负荷高并发的数据访问,需要设置更多的服务器一起分担压力。从物理层面解决高并发的问题,例如春运期间火车站多开购票窗口等。

分布式:将一个大型的项目架构拆分为若干个微服务来协同完成。从软件设计层面解决问题,例如将购票分为统计出发地与目的地,查询是否有票,统一购买票等步骤,分别由不同的人来完成这些小的工作,最后将所有的工作结果进行整合,实现更大的需求。

四、微服务的优点

1.各个服务的开发、测试、部署都是相互独立的。可以针对某一个特定的服务进行更多的操作,比如负载均衡等。

\2. 当有一个新的需求加入时,传统项目需要结合各方面考虑影响等,微服务就不存在这样的问题,省事省力又省心。

3.使用微服务将项目拆分后,只需要保证对外接口的正常运行,大大降低了各个模块之间的耦合性,极大的提高开发效率。

五、微服务的弊端

1.微服务的拆分基于业务,不能随心所欲的拆分,所以如何拆分,对于项目架构来说是非常重要且极具挑战的任务。

2.涉及到服务之间的调用时,常常需要和另外一个服务的提供方进行沟通,若是两个完全不同的公司或者部门,沟通成本比较大;某服务的对外接口要进行修改,也需要与其他服务调用方进行沟通。

3.由于各个服务相互独立,数据也是独立,当多个服务的接口进行操作时,如何保证数据的一致性是一个难点。数据统一性是微服务里面的一个难题。

六、为什么选择Spring Cloud

虽然微服务也有很多缺点,但是瑕不掩瑜,总体来讲,微服务还是实现分布式架构的一个非常好的方式。是当下非常热点的技术,也是未来技术发展的趋势。当下较为常见的微服务框架是Spring Cloud和dubbo。那我们为什么选择Spring Cloud呢,原因如下:

1.Spring Cloud是完全基于Spring Boot,服务调用是基于REST API ,整合了各种成熟的产品和架构,同时基于Spring Boot也使得整体的开发、配置、部署都非常的方便。

2.Spring系列的产品具备功能齐全、简单好用、性能优美、文档规范等优点。

七、Spring Cloud的整体架构

八、Spring Cloud的核心组件

Spring Cloud包含多个组件,主要是服务治理Eureka、服务通信Ribbon、服务通信Feign、服务网关Zuul、服务容错Hystrix、服务配置Config、服务监控Actuator、服务跟踪Zipkin等8大组件。 Spring Cloud的学习主要就是学习这些组件的使用以及这些组件之间的整合。

九、服务如何治理

服务治理的核心由三部分组成:服务提供者、服务消费者、注册中心

服务注册:分布式系统架构中,没个微服务在启动时,会将自己的信息存储在注册中心。

服务发现:服务消费者从注册中心获取服务提供者的信息,通过这些信息调用服务提供者的服务。

SpringCloud01:微服务概述的更多相关文章

  1. 一、微服务概述与SpringCloud

    一.微服务概述与SpringCloud 1.微服务与微服务架构 微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭意的看,可以看作Eclipse里面 ...

  2. SpringCloud学习笔记(二):微服务概述、微服务和微服务架构、微服务优缺点、微服务技术栈有哪些、SpringCloud是什么

    从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...

  3. SpringCloud与微服务Ⅱ --- 微服务概述

    一.什么是微服务 1) Martin Fowler论文对微服务的阐述(中文版) 2) 对单一应用进行拆分 3) 每一个独立的应用都有一个独立的进程 4) 拥有自己独立的数据库 5) 微服务化的核心就是 ...

  4. SpringColud微服务-微服务概述

    一.什么是微服务架构 微服务架构是一种架构模式,它提倡讲单一应用程序划分为一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在单独的进程当中,服务与服务之间采用轻量级的通信机制 ...

  5. Spring Cloud与Docker——微服务架构概述

    Spring Cloud与Docker--微服务架构概述 单体应用架构概述 微服务概述 微服务的特性 微服务架构的优点 微服务面临的挑战 微服务的设计原则 单体应用架构概述 传统的服务发布都是采用单体 ...

  6. java框架之SpringCloud(1)-微服务及SpringCloud介绍

    微服务概述 是什么 业界大牛 Martin Fowler 这样描述微服务: 参考[微服务(Microservices)-微服务原作者Martin Flower博客翻译]. 下面是关于上述博客中的部分重 ...

  7. 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用

    本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...

  8. 应用Dubbo框架打造仿猫眼项目 理解微服务核心思想

    1:传统应用带来的问题 单一业务开发的迭代问题              扩容困难              部署回滚困难2:微服务概述 微服务是一种将业务系统进一步拆分的架构风格          ...

  9. SpringCloud与微服务系列专栏

    一. 前置知识 学习SpringCloud之前需要具备和掌握如下框架和工具的使用:SpringMVC,Spring,Spring Boot,Mybatis,Maven,Git. SpringCloud ...

随机推荐

  1. 【flutter学习】基础知识(一)

    今天开始学习一下flutter 学习思路:首先由一个简单的例子引出每次学习的对象,一点一点加入元素,针对于代码去了解学习详细知识. 看完本篇博客能够快速的读懂flutter简单代码. flutter ...

  2. 【JavaScript】Leetcode每日一题-移除元素

    [JavaScript]Leetcode每日一题-移除元素 [题目描述] 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用 ...

  3. 一个或多个筛选器或者Listeners启动失败

    问题描述 运行ssm项目,tomcat启动后报下面的错误. org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启 ...

  4. $ git push -u origin master 报错

    输入$ git push -u origin master报permission denied(publickey) 如下: 原因是没有与gitee上的账号成功建立密钥对,所以需要配对密钥 解决方法( ...

  5. Java_抽象

    抽象的基本使用 抽象的关键字是abstract,可以用来修饰类(抽象类),还可以修饰方法(抽象方法). 1 //抽象类 2 public abstract class Animal{ 3 //抽象方法 ...

  6. 微服务·API网关

    阅文时长 | 3.52分钟 字数统计 | 1232字符 主要内容 | 1.什么是API网关 2.微服务中的API网关 3.几种部署策略 『微服务·API网关』 编写人 | SCscHero 编写时间 ...

  7. SPEC CPU2006的安装和使用

    https://www.spec.org/download.html http://blog.lazzzy.xyz/2017/09/15/SPEC_CPU2006/ BenchMark SPEC CP ...

  8. CentOS 6.5新增加硬盘挂载并实现开机自动挂载

    Centos7.x请参考:https://www.cnblogs.com/himismad/p/7851548.html 在内网主机Centos 6.5新增一个50G硬盘 (搭建在CAS服务器,直接新 ...

  9. linux环境下时区无法设置(UTC无法更改为CST)的问题解决

    在进行linux下修改时区的时候 总是修改不了 修改成 Asia/Shanghai  但是 时区总是 +0000 却不是想要的+0800 按照网上的方法 A方法:tzselect:执行tzselect ...

  10. 完全理解Python 迭代对象、迭代器、生成器

    在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...