外行人都能看懂的SpringCloud,错过了血亏! https://www.cnblogs.com/Java3y/p/9540386.html

史上最简单的 SpringCloud 教程 | 终章 https://blog.csdn.net/forezp/article/details/70148833

springcloud学习资料汇总 http://www.ityouknow.com/springcloud/2016/12/30/springcloud-collect.html

1.跟我学Spring Cloud  http://xujin.org/categories/%E8%B7%9F%E6%88%91%E5%AD%A6Spring-Cloud/
2.周立|Spring Cloud  http://www.itmuch.com/categories/Spring-Cloud/
3.Spring Cloud基础教程(强烈推荐)  http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/
4.Spring Cloud系列文章  http://www.ityouknow.com/spring-cloud
5.史上最简单的 Spring Cloud 教程  http://blog.csdn.net/column/details/15197.html
6.liaokailin的专栏  http://blog.csdn.net/liaokailin/article/category/6212338
7.Spring Cloud系列  http://blog.csdn.net/column/details/17373.html
9. 一起来学Spring Cloud(F版) https://blog.battcn.com/tags/Finchley/

 

spring cloud config: 配置中心的配置会覆盖本地的配置

spring cloud config 统一配置中心 读取本地文件配置 https://blog.csdn.net/u010176542/article/details/80211947

Spring Cloud Config 使用SVN 和 git方式的相关配置 https://www.cnblogs.com/huxipeng/p/9674516.html

spring cloud config server 配置中心git示例  https://blog.csdn.net/forezp/article/details/70037291  http://www.ityouknow.com/springcloud/2017/05/22/springcloud-config-git.html

spring cloud config server使用svn来作为外部配置中心 https://www.jianshu.com/p/287b36596114 [路径说明]    https://www.jianshu.com/p/287b36596114

配置中心svn示例和refresh http://www.ityouknow.com/springcloud/2017/05/23/springcloud-config-svn-refresh.html

Spring Cloud Config 使用本地配置文件 https://blog.csdn.net/sunbufu/article/details/79291746

整合最新版本actuator的refresh,health,info问题 https://blog.csdn.net/qq_27101653/article/details/80816036

Spring Cloud Config采用数据库存储配置内容 http://blog.didispace.com/spring-cloud-starter-edgware-3-1/

 

微服务下使用网关 Spring Cloud Gateway https://www.jianshu.com/p/1c942a8abe18

 

分布式配置中心

开源分布式配置中心选型 http://blog.zollty.com/b/archive/config-center-selection.html

SpringCloud系列:服务配置文件的进化历程(程序内置、程序外置、实时更新) https://my.oschina.net/gengkangkang/blog/1592169

SpringCloud系列:整合携程Apollo实现分布式配置中心(一)Apollo官方     官方安装Quick Start工程     分布式部署指南    整合1 https://my.oschina.net/gengkangkang/blog/1593812 整合2 https://blog.csdn.net/sinat_24798023/article/details/80239637  整合3 https://blog.csdn.net/myFirstCN/article/details/81608672

可支持的环境列表   添加自定义的环境   apollo配置中心增加环境的方法

Apollo配置中心整合spring cloud zuul https://cloud.tencent.com/info/b18ad6ed319b34f5acf335e5a676f69f.html

SpringCloud集成Apollo分布式配置中心 https://www.jianshu.com/p/5606483c7fbf

Spring Boot 2.0 整合携程Apollo配置中心 https://www.jianshu.com/p/23d695af7e80

SpringCloud系列:整合百度Disconf实现分布式配置中心 https://my.oschina.net/gengkangkang/blog/1593163

 

在Spring Cloud中实现降级之权重路由和标签路由(灰度升级办法http://xujin.org/sc/sc-ribbon-demoted/

Spring Cloud 线上超时问题总结 https://juejin.im/post/5df206bcf265da33ee177ee6

 

 

 

分布式事务

Spring Cloud 分布式事务管理 https://blog.csdn.net/zyndev/article/details/79604395

消息最终一致性方案,基于rabbitmq的分布式事务解决方案 https://github.com/vvsuperman/coolmq

消息最终一致性方案,基于RocketMQ :https://blog.csdn.net/chunlongyu/article/details/53844393

Spring Cloud的分布式事务框架压测第一轮 http://springcloud.cn/view/374

阿里分布式事务中间件GTS在Spring Cloud上的应用实践 https://www.jianshu.com/p/37657d557183

LCN 分布式事务框架 https://github.com/codingapi/tx-lcn   教程: https://blog.csdn.net/zhangxing52077/article/details/81587988

Spring Cloud 分布式事务管理:

基于XA协议的两阶段提交: XA中大致分为两部分,  事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口,而事务管理器作为全局的调度者,负责各个本地资源的提交和回滚。XA目前在商业数据库支持的比较理想,在mysql数据库中支持的不太理想,mysql的XA实现,没有记录prepare阶段日志,主备切换回导致主库与备库数据不一致。许多nosql也没有支持XA,这让XA的应用场景变得非常狭隘。
消息事务+最终一致性: 基于消息中间件的两阶段提交,本质上是对消息中间件的一种特殊利用,它是将本地事务和发消息放在了一个分布式事务里,保证要么本地操作成功成功并且对外发消息成功,要么两者都失败,开源的RocketMQ就支持这一特性. 该方案采用最终一致的,牺牲了一致性,换来了性能的大幅度提升。存在造成数据不一致的风险 .
TCC编程模式: 是两阶段提交的一个变种。TCC提供了一个编程框架,将整个业务逻辑分为三块:Try、Confirm和Cancel三个操作。以在线下单为例,Try阶段会去扣库存,Confirm阶段则是去更新订单状态,如果更新订单失败,则进入Cancel阶段,会去恢复库存。总之,TCC就是通过代码人为实现了两阶段提交,不同的业务场景所写的代码都不一样,复杂度也不一样,因此,这种模式并不能很好地被复用。
tx-lcn: 5.x才开始支持spring boot 2.0,LCN有比较全面的文档,包括原理介绍、使用说明、视频讲解,演示demo等,而且LCN对于业务代码的入侵性极小,开发者使用起来也比较方便。不过LCN需要单独部署txmanager服务。
ByteTCC: 是一个基于TCC(Try/Confirm/Cancel)机制的分布式事务管理器。兼容JTA,可以很好的与EJB、Spring等容器进行集成。
tcc-transaction: tcc-transaction在GitHub上有完整的使用说明文档,并且提供了基于dubbo、http等方式的demo,对于使用者来说比较友好。在使用上通过注解的形式编写分布式事务的confirm与cancel代码,具有代码入侵性较小的特点。带宽占用将成为瓶颈
Hmily: 在压力测试中,线程大部分时间处于阻塞状态,多数线程都处于等待锁的状态中。
EasyTransaction: 基于TCC、补偿以及消息队列等多种形式实现了分布式事务,不同的实现形式可以在同一个分布式事务中使用,开发者可以选择自己适用的场景开发。但是,EasyTransaction示例代码只有单元测试代码,demo代码不及以上几个框架,对于开发者不够易用。EasyTransaction对于代码的入侵性比较大,不及其他框架方便。

 

spring boot 多实例启动
方式1:在IDEA上点击Application右边的下三角,弹出选项后,点击Edit Configuration,去掉Single instance only(低版本的选择),或者选择All parallel run(允许并行运行,高版本)。然后改变端口,不需要方式2的,直接在Override paramters加上server.port,xxxx配置就好。

方式3: 如果上面不选择,All parallel run,那么可以直接复制一份配置出来,修改端口就好。

方式2: https://blog.csdn.net/forezp/article/details/76408139

 

SpringCloud系列教程   https://www.geekdigging.com/category/springcloud/

 

2小时学会springboot https://blog.csdn.net/forezp/article/details/61472783

查看原文: https://blog.csdn.net/forezp/article/details/70148833

 

Spring Cloud工具框架

  • Spring Cloud Config 配置中心,利用 Git 集中管理程序的配置。
  • Spring Cloud Netflix 集成众多Netflix的开源软件。
  • Spring Cloud Netflix Eureka 服务中心(类似于管家的概念,需要什么直接从这里取,就可以了),一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。
  • Spring Cloud Netflix Hystrix 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
  • Spring Cloud Netflix Zuul 网关,是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Web 网站后端所有请求的前门。
  • Spring Cloud Netflix Archaius 配置管理 API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
  • Spring Cloud Netflix Ribbon 负载均衡
  • Spring Cloud Netflix Fegin REST客户端
  • Spring Cloud Bus 消息总线,利用分布式消息将服务和服务实例连接在一起,用于在一个集群中传播状态的变化。
  • Spring Cloud for Cloud Foundry 利用 Pivotal Cloudfoundry 集成你的应用程序。
  • Spring Cloud Cloud Foundry Service Broker 为建立管理云托管服务的服务代理提供了一个起点。
  • Spring Cloud Cluster 集群工具,基于 Zookeeper, Redis, Hazelcast, Consul 实现的领导选举和平民状态模式的抽象和实现。
  • Spring Cloud Consul 基于 Hashicorp Consul 实现的服务发现和配置管理。
  • Spring Cloud Security 安全控制,在 Zuul 代理中为 OAuth2 REST 客户端和认证头转发提供负载均衡。
  • Spring Cloud Sleuth 分布式链路监控,SpringCloud 应用的分布式追踪系统,和 Zipkin,HTrace,ELK 兼容。
  • Spring Cloud Data Flow 一个云本地程序和操作模型,组成数据微服务在一个结构化的平台上。
  • Spring Cloud Stream 消息组件,基于 Redis,Rabbit,Kafka 实现的消息微服务,简单声明模型用以在 Spring Cloud 应用中收发消息。
  • Spring Cloud Stream App Starters 基于 Spring Boot 为外部系统提供 Spring 的集成。
  • Spring Cloud Task 短生命周期的微服务,为 Spring Booot 应用简单声明添加功能和非功能特性。
  • Spring Cloud Task App Starters。
  • Spring Cloud Zookeeper 服务发现和配置管理基于 Apache Zookeeper。
  • Spring Cloud for Amazon Web Services 快速和亚马逊网络服务集成。
  • Spring Cloud Connectors 便于PaaS应用在各种平台上连接到后端像数据库和消息经纪服务。
  • Spring Cloud Starters (项目已经终止并且在 Angel.SR2 后的版本和其他项目合并)
  • Spring Cloud CLI 命令行工具,插件用 Groovy 快速的创建 Spring Cloud 组件应用。

 

CAP理论:

就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡

C A 满足的情况下,P不能满足的原因:

数据同步(C)需要时间,也要正常的时间内响应(A),那么机器数量就要少,所以P就不满足

CP 满足的情况下,A不能满足的原因:

数据同步(C)需要时间, 机器数量也多(P),但是同步数据需要时间,所以不能再正常时间内响应,所以A就不满足

AP 满足的情况下,C不能满足的原因:

机器数量也多(P),正常的时间内响应(A),那么数据就不能及时同步到其他节点,所以C不满足

 

 

Spring Cloud入门-汇总篇(Hoxton版本)

https://blog.csdn.net/ThinkWon/article/details/103786588

 

Finchley版本   https://www.fangzhipeng.com/spring-cloud.html  更多资料

Spring Cloud Finchley; Spring Boot 2.0.3

上面教程补充:

待增加

 

 

 

进阶篇

源码篇:

番外篇:

给数据库带来的挑战
每个微服务都有自己独立的数据库,那么后台管理的联合查询怎么处理?这是大家普遍遇到的一个问题。
有如下三种处理方案:
1. 严格按照微服务的划分来做,微服务相互独立,各微服务数据库也独立,后台需要展示数据时,调用各微服务的接口来获取对应的数据,再进行数据处理后展示出来,这是标准的用法,也是最麻烦的用法。
2. 将业务相关的表放到一个库中,将业务无关的表严格按照微服务模式来拆分,这样既可以使用微服务,也避免了数据库各种切换导致后台统计难以实现,是一个折中的方案。
3. 数据库严格按照微服务的要求来切分,以满足业务高并发,实时或者准实时将各微服务数据库数据同步到 NoSQL 数据库中,在同步的过程中进行数据清洗,用来满足后台业务系统的使用,推荐使用 Mongodb、Hbase 等。
三种方案在不同的公司我都使用过,第一种方案适合业务较为简单的小公司;第二种方案,适合想在原有系统之上,慢慢演化为微服务架构的公司;第三种适合大型高并发的互联网公司。

 

 

环境资源的命名规则由以下的三个参数确定:

{application}映射到Config客户端的spring.application.name属性
{profile}映射到Config客户端的spring.profiles.active属性,可以用来区分环境,比如dev,test,produce等等
{label}映射到Git服务器的commit id,分支名称或者tag,默认值为master

仓库中的配置文件会被转换成web接口,访问可以参照以下的规则:

举个栗子:
我在配置中心的目录下放置文件:

以cloud-config-rd.properties为例子,它的application是cloud-config,profile是rd.client会根据填写的参数来选择读取对应的配置。

 

 

 

 

 

实践碰到的问题:

第一篇: 服务的注册与发现Eureka(Finchley版本)

  1.  spring-boot-starter-parent要使用2.1.1.RELEASE版本,否则启动不了

第十二篇: 断路器监控(Hystrix Dashboard)(Finchley版本)

  1.  缺少配置