一.什么是微服务

1) Martin Fowler论文对微服务的阐述(中文版)

2) 对单一应用进行拆分

3) 每一个独立的应用都有一个独立的进程

4) 拥有自己独立的数据库

5) 微服务化的核心就是讲传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务处理一件事,从技术角度就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己的数据库。

二.微服务与微服务架构

2.1 微服务架构

1) 类似于eclipse工具里面用maven开发的一个个独立的module,具体是使用springboot开发的一个小模块,一个模块就做一件功能。

2) 强调是整体,每一个个体完成一个具体的任务或者功能,把一个个的个体拼接起来,组成一个整体并对外暴露服务。

3) 微服务架构是一种架构模式,它提倡将单一的应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制。对具体的一个服务而言,应根据业务的上下文,选择合适的语言、工具对其进行构建。

2.2 微服务

强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭义地看,可以看做Eclipse里面的一个个微服务工程或者Module。

注意,微服务、微服务架构、Spring Cloud是三种不同的概念,不要弄混淆。

三.微服务的优缺点

3.1 微服务的优点

1) 每个服务足够内聚,足够小,代码容易理解这样能聚焦一个指定的业务。单机版的应用由于很多业务耦合在一起,修改代码时往往需要读懂一整块的业务功能,而微服务项目只需要了解其中一小块,由于项目足够小并且都是独立的,代码更容易理解,也更容易维

2) 开发简单,开发效率提高,精力集中,一个服务只做一件事。

3) 小团队也能单独开发,管理容易,管理成本降低。

4) 微服务是松耦合的,是有功能意义的服务,无论是在开发阶段还是在部署阶段都是独立的,这样可以防止某个项目出问题了其他服务项目不会受到影响。

5) 微服务能使用不同语言开发。

6) 易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,例如Jenkins,Hudson,bamboo。

7) 微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。

8) 微服务允许你利用融合最新技术。

9) 微服务只是业务逻辑代码,不会和HTML,CSS或其他界面组件混合。

10) 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库。可以灵活搭配,连接公共库+连接独立库。

3.2 微服务的缺点

1) 开发人员需要处理分布式系统的复杂性。

2) 多服务运维难度,随着服务的增加,运维的压力也在增大。

3) 系统部署依赖,一个模块调不通有可能影响到其他模块的使用。

4) 服务间通信成本变高。

5) 数据的一致性问题。

6) 系统集成测试变复杂。

7) 性能监控变困难。

四.微服务的技术栈有哪些

微服务技术栈是多种技术的集合体。

  • 服务开发:Spring Boot、Spring、Spring MVC

  • 服务的配置与管理: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、RabbitMQ、Kafka等发送接收消息)

  • 事件消息总栈:Spring Cloud Bus

五.分布式框架的对比

  • 选型依据

    • 整体解决方案和框架成熟度

    • 社区热度

    • 可维护性

    • 学习曲线

  • 当前IT公司用的微服务架构有哪些?

    • 阿里Dubbo/HSF

    • 京东JSF

    • 新浪微博Motan

    • 当当网DubboX

 结论:SpringCloud满足几乎所有的微服务技术维度要求。

SpringCloud与微服务Ⅱ --- 微服务概述的更多相关文章

  1. SpringCloud学习(二):微服务入门实战项目搭建

    一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...

  2. dubbo初认知(dubbo和springCloud关系,在微服务架构中的作用等)(持续更新中)

    一:dubbo是什么? dobbuo是阿里开源的一个高性能优秀的服务框架, 可通过高性能的 RPC 实现服务的输出和输入功能,使得应用可以和 高性能的rpc实现输入和输出的功能,可以了  Spring ...

  3. SpringCloud实战 | 第五篇:SpringCloud整合OpenFeign实现微服务之间的调用

    一. 前言 微服务实战系列是基于开源微服务项目 有来商城youlai-mall 版本升级为背景来开展的,本篇则是讲述SpringCloud整合OpenFeign实现微服务之间的相互调用,有兴趣的朋友可 ...

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

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

  5. 微服务之服务注册与发现--Eureka(附代码)

    该贴为入门贴,看完可快速知道服务注册与发现是什么?怎么用?至于深入的内容不在此篇文章所述之内,请自行百度. 内容来自:https://blog.csdn.net/nanbiebao6522/artic ...

  6. 《吃透微服务》 - 服务容错之Sentinel

    大家好,我是小菜. 一个希望能够成为 吹着牛X谈架构 的男人!如果你也想成为我想成为的人,不然点个关注做个伴,让小菜不再孤单! 本文主要介绍 SpringCloud中Sentinel 如有需要,可以参 ...

  7. [转]系统架构演变--集中式架构-垂直拆分-分布式服务-SOA(服务治理)-微服务

    一.系统架构演变 1.1. 集中式架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键. 存在的 ...

  8. SOA、微服务与服务网格

    SOA架构解析 SOA 全称是: Service Oriented Architecture,中文释义为 “面向服务的架构”,它是一种设计理念,其中包含多个服务, 服务之间通过相互依赖最终提供一系列完 ...

  9. 微服务, 架构, 服务治理, 链路跟踪, 服务发现, 流量控制, Service Mesh

    微服务, 架构, 服务治理, 链路跟踪, 服务发现, 流量控制, Service Mesh 微服务架构   本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件.本文侧 ...

随机推荐

  1. 浅析 Nginx 网络事件

    Nginx 是一个事件驱动的框架,所谓事件主要指的是网络事件,Nginx 每个网络连接会对应两个网络事件,一个读事件一个写事件.在深入了解 Nginx 各种原理及在极端场景下的一些错误场景处理时,需要 ...

  2. python列表的增删查改

    添加新的元素 append() insert() extend() +号 删除元素 pop() remove() del xxx[index] 修改 xxx[index] = value 查找 in. ...

  3. Linux 创建网络会话

    Linux 创建网络会话 RHEL7系统支持网络会话功能,允许用户在多个配置文件中快速切换(非常类似于firewalld防火墙服务中的区域技术).如果我们在公司网络中使用笔记本电脑时需要手动指定网络的 ...

  4. MYSQL基本常用函数

    MYSQL基本常用函数 一.字符的操作函数 (ps:mysql中的索引都是从1开始的.) 1.instr(param1,param2) 返回子串第一次出现的索引,若找不到则返回0. param1填写操 ...

  5. 【题解】CF894E Ralph and Mushrooms (缩点)

    [题解]CF894E Ralph and Mushrooms (缩点) 这是紫?给个解方程算法 考虑一条边若可以重复遍历说明一定有环,有环的话一定会把环上的蘑菇榨干,考虑一条边从全部到榨干的贡献是多少 ...

  6. $Noip2015/Luogu2661$ 信息传递 并查集

    Luogu $Description$ 给定一个有向图,每个点只有一条出边.求图里的最小环. $Sol$ 使得这个题不难的地方就在于每个点只有一条出边叭. 一边连边一边更新答案.首先当然是初始$f[i ...

  7. 纯css 实现大白

    首先是用html 语言来搭建框架 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  8. 「模拟赛 2018-11-02」T3 老大 解题报告

    老大 题目描述 因为 OB 今年拿下 4 块金牌,学校赞助扩建劳模办公室为劳模办公室群,为了体现 OI 的特色,办公室群被设计成了树形(n 个点 n − 1 条边的无向连通图),由于新建的办公室太大以 ...

  9. 应急响应&&取证

    查看日志    eventvwr.exe   中了勒索病毒 1.查看download目录有没有病毒样本,C:\Users\86132\Downloads 2.查看系统开放端口 3.导出systemin ...

  10. css部分概念

    1.层叠 规则之间属性相同,值不同的时候就会发生声明冲突,这个时候层叠就会起作用了,层叠会将我们声明的不同的值进行保留,相同的值进行比较,选权重值更高的一个来运行.具体情境如下:假设我们定义了一个di ...