什么是微服务架构

  微服务架构就是系统架构设计的一种风格,它主旨将一个独立的系统,拆分成各个微服务,各个微服务独立运行,他们之间通过Http的Restful API进行通信,拆分出来的微服务是根据原系统高耦合部分进行构建(之后会单独讲解如何拆分微服务),每个微服务都有自己的数据存储(涉及到分布式事务的处理,之后会有讲解)、独立部署,由于轻量级的通讯协议,微服务可以使用不同的语言来开发。 

单体式应用的区别

  以往的传统架构,我们会针对一个业务进行构建一个单体项目,主要分为数据、服务端、客户端,在业务初期往往开发、测试、部署等相对比较简单,但是经过不断的更新迭代之后会发现这个单体应用汇很臃肿,并且耦合度极高,可能修改一处代码会牵扯到很多地方的修改,缺点慢慢就暴露出来了,维护成本也会越来越大,且开发不容上手。

  微服务就解决了这个单体应用臃肿难以维护的问题,我们可以将不同的功能模块进行拆分,拆分出一个一个微服务,可独立部署和扩展,部署一个微服务不会影响到其他微服务的运行,实现了高内聚、低耦合,我们也可以更准确的去发现系统的性能瓶颈

SpringCloud

  SpringCloud是一个基于SpringBoot实现的微服务架构开发工具,它为微服务中的服务治理、配置管理、智能路由、分布式会话、集群状态等提供了一个简单的开发方式。

  SpringCloud包含多个组件:

    SpringCloud Netflix:核心组件,对多个Netflix OSS开源套件进行整合。

      Eureka:服务治理组件,包含服务注册中心,服务注册与发现的实现。

      Hystrix:断路由,帮助服务依赖中出现延迟和故障时提供强大的容错机制。

      Ribbon:客户端负载均衡组件。

      Feign:基于Ribbon和Hystrix的声明式服务调用组件,一般用于服务之间相互调用。

      Zuul:网关,智能路由、智能过滤等功能。

      Archaius:外部化配置组件。

    SpringCloud Config:配置中心,可实现配置外部化存储,支持使用SVN、GIT存储配置,并支持配置刷新功能。

    SpringCloud Bus:消息总线,用于传播集群中各微服务的状态变化,比如可以实现动态刷新配置

    SpringCloud Stream:通过Kafka、Redis、MQ、可以实现消费微服务,通过简单的模型就可实现发送和消费

    SpringCloud Sleuth:链路追踪组件,可实现分布式跟踪,方便定位问题等

    还有很多组件这里就不一一介绍了

SpringCloud是基于SpringBoot搭建的,所以大家要对SpringBoot有一定的掌握

微服务之SpringCloud实战(一):SpringCloud简介的更多相关文章

  1. 字节跳动内部微服务架构-Docker实战学习笔记分享 真香

    前言 基于 Spring Cloud 的微服务设计和开发,已经越来越多地得到了更多企业的推广和应用,而 Spring Cloud 社区也在不断的迅速发展壮大之中,近几年时间,Spring Cloud ...

  2. 微服务架构案例(05):SpringCloud 基础组件应用设计

    本文源码:GitHub·点这里 || GitEE·点这里 更新进度(共6节): 01:项目技术选型简介,架构图解说明 02:业务架构设计,系统分层管理 03:数据库选型,业务数据设计规划 04:中间件 ...

  3. 19.SpringCloud实战项目-SpringCloud整合Alibaba-Nacos配置中心

    SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...

  4. Aibabelx-shop 大型微服务架构系列实战之技术选型

    一.本项目涉及编程语言java,scala,python,涉及的技术如下: 1.微服务架构: springboot springcloud mybatisplus shiro 2.全文检索技术 sol ...

  5. 【.net core】电商平台升级之微服务架构应用实战

    一.前言 这篇文章本来是继续分享IdentityServer4 的相关文章,由于之前有博友问我关于微服务相关的问题,我就先跳过IdentityServer4的分享,进行微服务相关的技术学习和分享.微服 ...

  6. Go微服务框架go-kratos实战05:分布式链路追踪 OpenTelemetry 使用

    一.分布式链路追踪发展简介 1.1 分布式链路追踪介绍 关于分布式链路追踪的介绍,可以查看我前面的文章 微服务架构学习与思考(09):分布式链路追踪系统-dapper论文学习(https://www. ...

  7. Jenkins-k8s-helm-harbor-githab-mysql-nfs微服务发布平台实战

    基于 K8S 构建 Jenkins 微服务发布平台 实现汇总: 发布流程设计讲解 准备基础环境 K8s环境(部署Ingress Controller,CoreDNS,Calico/Flannel) 部 ...

  8. Jenkins-k8s-helm-eureka-harbor-githab-mysql-nfs微服务发布平台实战

    基于 K8S 构建 Jenkins 微服务发布平台 实现汇总: 发布流程设计讲解 准备基础环境 K8s环境(部署Ingress Controller,CoreDNS,Calico/Flannel) 部 ...

  9. 2021升级版微服务教程7-OpenFeign实战开发和参数调优

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 教程全目录「含视频」:https://gitee.c ...

  10. Go微服务框架go-kratos实战03:使用 gorm 实现增删改查操作

    一.简介 在上一篇文章 go-kratos实战02 中,详细介绍了用 kratos 编写项目代码的步骤.这篇就在上篇基础上,再结合 Go 数据库操作库 gorm 一步一步来实现一个简单的增删改查操作. ...

随机推荐

  1. java的URI和URL到底是什么

    在我们做开发时,经常有URI和URL弄混的问题,如果当时直接看URI和URL的源码就不可能弄混.首先我总结一下URI和URL的关系:他们的关系是:URL是一种特殊的URI,是URI包括URL, 下面用 ...

  2. 编程技巧 - malloc()与free()

    1.要节省ram资源,可以使用malloc()动态申请内存,使用完再用free()释放掉,free()释放的是指针指向的内存空间,而不是指针. 2.如果某个大数组要在两个函数中使用,可以先定义一个全局 ...

  3. ubuntu12.04回归到经典的gnome界面

    要想删除Unity恢复到经典Gnome桌面也很简单,几乎就是一条命令的事情--命令这种东西虽然不直观,但非常可靠和快捷,同时按住Ctrl+Alt+T三个键,调出系统终端,输入: sudoapt-get ...

  4. jquery实现通用结构折叠面板效果

    效果截图: 说明:可以任意添加多个类似结构样式,点击标题栏图片对应隐藏.显示. jquery代码: 思路一:基本方法 <script src="http://apps.bdimg.co ...

  5. peity(jQuery 插件可以将元素内容转换为一个小的 <svg> 饼图,圆环图,条形图和折线图)

    API地址:https://www.awesomes.cn/repo/benpickles/peity 实例效果

  6. idea 将工程项目打包成war

    1.File--Project structure ---- Artifacts ----- + -----web Application :Archive ---for ' **:war explo ...

  7. 【EOJ3652】乘法还原(二分图)

    题意: 思路:Orz Claris 先找出所有平方项,将与有平方项的数有关的数对暂时忽略,剩下的直接连边就是一张二分图,暴力DFS染色 将有平方项的数两边都加一个,再判字典序即可 我不会判字典序……耽 ...

  8. Oop分析方法

    为了实现Oop,这个我已经在一个前端的js项目中实现了Oop,过后总结:对于js这种动态语言,可以在运行时动态组件对象的属性和方法这种,解释型的语言来讲,真的是OOP,如果不存在关系数据库,仅仅是从后 ...

  9. 手机端的META

    一.天猫 <title>天猫触屏版</title> <meta content="text/html; charset=utf-8" http-equ ...

  10. 【Mysql优化】索引优化策略

    1:索引类型 1.1 B-tree索引 注: 名叫btree索引,大的方面看,都用的平衡树,但具体的实现上, 各引擎稍有不同, 比如,严格的说,NDB引擎,使用的是T-tree   Myisam,in ...