微服务之SpringCloud实战(一):SpringCloud简介
什么是微服务架构
微服务架构就是系统架构设计的一种风格,它主旨将一个独立的系统,拆分成各个微服务,各个微服务独立运行,他们之间通过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简介的更多相关文章
- 字节跳动内部微服务架构-Docker实战学习笔记分享 真香
前言 基于 Spring Cloud 的微服务设计和开发,已经越来越多地得到了更多企业的推广和应用,而 Spring Cloud 社区也在不断的迅速发展壮大之中,近几年时间,Spring Cloud ...
- 微服务架构案例(05):SpringCloud 基础组件应用设计
本文源码:GitHub·点这里 || GitEE·点这里 更新进度(共6节): 01:项目技术选型简介,架构图解说明 02:业务架构设计,系统分层管理 03:数据库选型,业务数据设计规划 04:中间件 ...
- 19.SpringCloud实战项目-SpringCloud整合Alibaba-Nacos配置中心
SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...
- Aibabelx-shop 大型微服务架构系列实战之技术选型
一.本项目涉及编程语言java,scala,python,涉及的技术如下: 1.微服务架构: springboot springcloud mybatisplus shiro 2.全文检索技术 sol ...
- 【.net core】电商平台升级之微服务架构应用实战
一.前言 这篇文章本来是继续分享IdentityServer4 的相关文章,由于之前有博友问我关于微服务相关的问题,我就先跳过IdentityServer4的分享,进行微服务相关的技术学习和分享.微服 ...
- Go微服务框架go-kratos实战05:分布式链路追踪 OpenTelemetry 使用
一.分布式链路追踪发展简介 1.1 分布式链路追踪介绍 关于分布式链路追踪的介绍,可以查看我前面的文章 微服务架构学习与思考(09):分布式链路追踪系统-dapper论文学习(https://www. ...
- Jenkins-k8s-helm-harbor-githab-mysql-nfs微服务发布平台实战
基于 K8S 构建 Jenkins 微服务发布平台 实现汇总: 发布流程设计讲解 准备基础环境 K8s环境(部署Ingress Controller,CoreDNS,Calico/Flannel) 部 ...
- Jenkins-k8s-helm-eureka-harbor-githab-mysql-nfs微服务发布平台实战
基于 K8S 构建 Jenkins 微服务发布平台 实现汇总: 发布流程设计讲解 准备基础环境 K8s环境(部署Ingress Controller,CoreDNS,Calico/Flannel) 部 ...
- 2021升级版微服务教程7-OpenFeign实战开发和参数调优
2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 教程全目录「含视频」:https://gitee.c ...
- Go微服务框架go-kratos实战03:使用 gorm 实现增删改查操作
一.简介 在上一篇文章 go-kratos实战02 中,详细介绍了用 kratos 编写项目代码的步骤.这篇就在上篇基础上,再结合 Go 数据库操作库 gorm 一步一步来实现一个简单的增删改查操作. ...
随机推荐
- [BZOJ2946] [Poi2000]公共串解题报告|后缀数组
给出几个由小写字母构成的单词,求它们最长的公共子串的长度. 单词个数<=5,每个单词长度<=2000 尽管最近在学的是SAM...但是看到这个题还是忍不住想写SA... (其实是不 ...
- bzoj 3190 维护栈
我们可以将每一辆赛车看成一条直线,斜率为速度,纵截距为初始位置,那么问题就转化为求这n条直线处于最上面的直线.最上面是指在坐标系中,假设从x轴向下看,能看到的直线,只露一个点也算能看见.那么就类似水平 ...
- 【IDEA】设置类头注释和方法注释
idea和eclipse的注释还是有一些差别的. 类头注释: 打开file->setting->Editor->Filr and Code Templates->Include ...
- ubuntu设置默认python版本
原文:https://www.cnblogs.com/johnny1024/p/8400511.html ··· ubuntu 16.04本身是自带python的,他本身是自带2.X和3.X,两个版本 ...
- apparmor开启
- JMeter 定时器(Synchronizing Timer)之集合点应用
性能测试中我们经常提到一个概念就是“并发”,其实在实际真实的性能测试中是不存在真正的并发的.为了更真实的模拟对一个请求的并发测试场景,我们通常设置一个集合点,JMeter中提供了这样的一个功能设置. ...
- PL/SQL 01 代码编写规则
1.标识符命名规则当在 PL/SQL 中使用标识符定义变量.常量时,标识符名称必须以字符开始,并且长度不能超过 30 个字符.另外,为了提高程序的可读性,Oracle 建议用户按照以下规则定义各种标识 ...
- mybatis插入值的时候返回对象的主键值
mapping文件: <insert id="insert" parameterType="com.vimtech.bms.business.riskproject ...
- PHP定时执行
参考一 test.bat D:\myamp\php\php.exe -q D:\myamp\Apache\htdocs\dingshi.php dingshi.php <?php ignore_ ...
- Zookeeper概念学习系列之zookeeper实现分布式共享锁
首先假设有两个线程, 两个线程要同时到mysql中更新一条数据, 对数据库中的数据进行累加更新.由于在分布式环境下, 这两个线程可能存在于不同的机器上的不同jvm进程中, 所以这两个线程的关系就是垮主 ...