架构演进和分布式系统基础知识

1、传统架构演进到分布式架构
简介:讲解单机应用和分布式应用架构演进基础知识 (画图)

 高可用 LVS+keepalive 1、单体应用:开发速度慢启动时间长依赖庞大等等2、微服务易开发、理解和维护独立的部署和启动等不足:分布式系统-》分布式事务问题需要管理多个服务-》服务治理

2、微服务核心基础讲解
简介:讲解微服务核心知识 :网关、服务发现注册、配置中心、链路追踪、负载均衡器、熔断
1、网关:路由转发 + 过滤器
/api/v1/pruduct/ 商品服务
/api/v1/order/ 订单服务
/api/v1/user/ 用户服务

 2、服务注册发现:调用和被调用方的信息维护3、配置中心:管理配置,动态更新 application.properties4、链路追踪:分析调用链路耗时例子:下单-》查询商品服务获取商品价格-》查询用户信息-》保存数据库5、负载均衡器:分发负载6、熔断:保护自己和被调用方

3、常见的微服务框架
简介:讲解常用的微服务框架

 consumer: 调用方provider: 被调用方一个接口一般都会充当两个角色(不是同时充当)1、dubbo: zookeeper + dubbo + springmvc/springboot官方地址:http://dubbo.apache.org/#!/?lang=zh-cn配套通信方式:rpc注册中心:zookeper/redis配置中心:diamond2、springcloud: 全家桶+轻松嵌入第三方组件(Netflix 奈飞)官网:http://projects.spring.io/spring-cloud/配套通信方式:http restful注册中心:eruka/consul配置中心:config断路器:hystrix网关:zuul分布式追踪系统:sleuth+zipkin学习资料:https://blog.csdn.net/zhangweiwei2020/article/details/78646252

4、微服务下电商项目基础模块设计
简介:微服务下电商项目基础模块设计 分离几个模块,课程围绕这个基础项目进行学习
小而精的方式学习微服务

 1、用户服务1)用户信息接口2)登录接口2、商品服务1)商品列表2)商品详情3、订单服务 1)我的订单2)下单接口

第三章 SpringCloud核心组件注册中心

1、什么是微服务的注册中心
简介:讲解什么是注册中心,常用的注册中心有哪些 (画图)

 理解注册中心:服务管理,核心是有个服务注册表,心跳机制动态维护服务提供者provider: 启动的时候向注册中心上报自己的网络信息服务消费者consumer: 启动的时候向注册中心上报自己的网络信息,拉取provider的相关网络信息为什么要用:微服务应用和机器越来越多,调用方需要知道接口的网络地址,如果靠配置文件的方式去控制网络地址,对于动态新增机器,维护带来很大问题主流的注册中心:zookeeper、Eureka、consul、etcd 等

2、分布式应用知识CAP理论知识
简介:讲解分布式核心知识CAP理论

 CAP定理:指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可同时获得。一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(所有节点在同一时间的数据完全一致,越多节点,数据同步越耗时)可用性(A):负载过大后,集群整体是否还能响应客户端的读写请求。(服务一直可用,而且是正常响应时间)分区容错性(P):分区容忍性,就是高可用性,一个节点崩了,并不影响其它的节点(100个节点,挂了几个,不影响服务,越多机器越好)CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡

3、分布式系统CAP原理常见面试题和注册中心选择
简介:讲解CAP原则在面试中回答和注册中心选择

 C A 满足的情况下,P不能满足的原因:数据同步(C)需要时间,也要正常的时间内响应(A),那么机器数量就要少,所以P就不满足CP 满足的情况下,A不能满足的原因:数据同步(C)需要时间, 机器数量也多(P),但是同步数据需要时间,所以不能再正常时间内响应,所以A就不满足AP 满足的情况下,C不能满足的原因:机器数量也多(P),正常的时间内响应(A),那么数据就不能及时同步到其他节点,所以C不满足注册中心选择:Zookeeper:CP设计,保证了一致性,集群搭建的时候,某个节点失效,则会进行选举行的leader,或者半数以上节点不可用,则无法提供服务,因此可用性没法满足Eureka:AP原则,无主从节点,一个节点挂了,自动切换其他节点可以使用,去中心化结论:分布式系统中P,肯定要满足,所以只能在CA中二选一没有最好的选择,最好的选择是根据业务场景来进行架构设计如果要求一致性,则选择zookeeper,如金融行业如果要去可用性,则Eureka,如电商系统

4、SpringCloud微服务核心组件Eureka介绍和闭源后影响
简介:
SpringCloud体系介绍
官方地址:http://projects.spring.io/spring-cloud/

 Eureka的基础知识-->画图讲解交互流程,服务提供者<-->服务消费者 ;Eureka 2.x闭源后选择参考:https://www.jianshu.com/p/d32ae141f680https://blog.csdn.net/zjcjava/article/details/78608892

5、服务注册和发现Eureka Server搭建实战
简介:使用IDEA搭建Eureka服务中心Server端并启动,项目基本骨架介绍

官方文档:http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#spring-cloud-eureka-server第一步:创建项目
第二步: 添加注解 @EnableEurekaServer
第三步:增加配置application.ymlserver:port: 8761eureka:instance:hostname: localhostclient:#声明自己是个服务端registerWithEureka: falsefetchRegistry: falseserviceUrl:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/第四步:访问注册中心页面maven地址: https://www.cnblogs.com/sword-successful/p/6408281.html

6、服务注册和发现之Eureka Client搭建商品服务实战
简介:搭建用商品服务,并将服务注册到注册中心

1、创建一个SpirngBoot应用,增加服务注册和发现依赖
2、模拟商品信息,存储在内存中3、开发商品列表接口,商品详情接口4、配置文件加入注册中心地址使用eureka客户端 官方文档:http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#netflix-eureka-client-starter

7、Eureka服务注册中心配置控制台问题处理
简介:讲解服务注册中心管理后台,(后续还会细讲)

问题:eureka管理后台出现一串红色字体:是警告,说明有服务上线率低EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.关闭检查方法:eureka服务端配置文件加入
server:enable-self-preservation: false
注意:自我保护模式禁止关闭,默认是开启状态true问题二:为什么只加一个注册中心地址,就可以注册
By having spring-cloud-starter-netflix-eureka-client on the classpath, your application automatically registers with the Eureka Server. Configuration is required to locate the Eureka server, as shown in the following example:

第四章 服务消费者ribbon和feign实战和注册中心高可用

1、常用的服务间调用方式讲解
简介:讲解常用的服务间的调用方式

 RPC:远程过程调用,像调用本地服务(方法)一样调用服务器的服务支持同步、异步调用客户端和服务器之间建立TCP连接,可以一次建立一个,也可以多个调用复用一次链接PRC数据包小protobufthriftrpc:编解码,序列化,链接,丢包,协议Rest(Http):http请求,支持多种协议和功能开发方便成本低http数据包大java开发:HttpClient,URLConnection

2、微服务调用方式之ribbon实战 订单调用商品服务
简介:实战电商项目 订单服务 调用商品服务获取商品信息
1、创建order_service项目
2、开发伪下单接口
3、使用ribbon. (类似httpClient,URLConnection)

     启动类增加注解@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}4、根据名称进行调用商品,获取商品详情

3、高级篇幅之Ribbon负载均衡源码分析实战
简介: 讲解ribbon服务间调用负载均衡源码分析
1、完善下单接口
2、分析@LoadBalanced
1)首先从注册中心获取provider的列表
2)通过一定的策略选择其中一个节点
3)再返回给restTemplate调用

4、高级篇幅之服务间调用之负载均衡策略调整实战
简介:实战调整默认负载均衡策略实战

自定义负载均衡策略:http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html#_customizing_the_ribbon_client_by_setting_properties在配置文件yml里面,自定义负载均衡策略#自定义负载均衡策略product-service:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule策略选择:1、如果每个机器配置一样,则建议不修改策略 (推荐)2、如果部分机器配置强,则可以改为 WeightedResponseTimeRule

5、微服务调用方式之feign 实战 订单调用商品服务
简介:改造电商项目 订单服务 调用商品服务获取商品信息
Feign: 伪RPC客户端(本质还是用http)
官方文档: https://cloud.spring.io/spring-cloud-openfeign/

 1、使用feign步骤讲解(新旧版本依赖名称不一样)加入依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>启动类增加@EnableFeignClients增加一个接口 并@FeignClient(name="product-service")2、编码实战3、注意点:1、路径2、Http方法必须对应3、使用requestBody,应该使用@PostMapping4、多个参数的时候,通过@RequestParam("id") int id)方式调用

6、Feign核心源码解读和服务调用方式ribbon和Feign选择
简介: 讲解Feign核心源码解读和 服务间的调用方式ribbon、feign选择

 1、ribbon和feign两个的区别和选择选择feign默认集成了ribbon写起来更加思路清晰和方便采用注解方式进行配置,配置熔断等方式方便2、超时配置默认optons readtimeout是60,但是由于hystrix默认是1秒超时#修改调用超时时间feign:client:config:default:connectTimeout: 2000readTimeout: 2000模拟接口响应慢,线程睡眠新的方式try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}

第五章 互联网架构服务降级熔断 Hystrix 实战

1、分布式核心知识之熔断、降级讲解
简介:系统负载过高,突发流量或者网络等各种异常情况介绍,常用的解决方案

1、熔断:保险丝,熔断服务,为了防止整个系统故障,包含子和下游服务下单服务 -》商品服务-》用户服务 (出现异常-》熔断)2、降级:抛弃一些非核心的接口和数据旅行箱的例子:只带核心的物品,抛弃非核心的,等有条件的时候再去携带这些物品3、熔断和降级互相交集相同点:1)从可用性和可靠性触发,为了防止系统崩溃2)最终让用户体验到的是某些功能暂时不能用不同点1)服务熔断一般是下游服务故障导致的,而服务降级一般是从整体系统负荷考虑,由调用方控制

2、Netflix开源组件断路器Hystrix介绍
简介:介绍Hystrix基础知识和使用场景

文档地址:https://github.com/Netflix/Hystrixhttps://github.com/Netflix/Hystrix/wiki1、什么是Hystrix?1)hystrix对应的中文名字是“豪猪”2)hystrix    英[hɪst'rɪks] 美[hɪst'rɪks]2、为什么要用?在一个分布式系统里,一个服务依赖多个服务,可能存在某个服务调用失败,比如超时、异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,通过Hystrix就可以解决http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#_circuit_breaker_hystrix_clients3、提供了熔断、隔离、Fallback、cache、监控等功能4、熔断后怎么处理?出现错误之后可以 fallback 错误的处理信息兜底数据

3、Feign结合Hystrix断路器开发实战《上》
简介:讲解SpringCloud整合断路器的使用,用户服务异常情况

1、加入依赖注意:网上新旧版本问题,所以要以官网为主,不然部分注解会丢失
最新版本 2.0<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency>2、增加注解启动类里面增加注解注解越来越多-》 SpringCloudApplication注解3、API接口编码实战熔断-》降级1)最外层api使用,好比异常处理(网络异常,参数或者内部调用问题)api方法上增加 @HystrixCommand(fallbackMethod = "saveOrderFail")编写fallback方法实现,方法签名一定要和api方法签名一致(注意点!!!)补充: 修改maven仓库地址
pom.xml中修改<repositories><repository><id>nexus-aliyun</id><name>Nexus aliyun</name><layout>default</layout><url>http://maven.aliyun.com/nexus/content/groups/public</url><snapshots><enabled>false</enabled></snapshots><releases><enabled>true</enabled></releases></repository>
</repositories>

4、Feign结合Hystrix断路器开发实战《下》
简介:讲解SpringCloud整合断路器的使用,用户服务异常情况
1、feign结合Hystrix

 1)开启feign支持hystrix  (注意,一定要开启,旧版本默认支持,新版本默认关闭)feign:hystrix:enabled: true2)FeignClient(name="xxx", fallback=xxx.class ), class需要继承当前FeignClient的类

5、熔断降级服务异常报警通知实战
简介:完善服务熔断处理,报警机制完善

1、加入redis依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
2、配置redis链接信息redis:database: 0host: 127.0.0.1port: 6379timeout: 20003、使用//监控报警String saveOrderKye = "save-order";String sendValue = redisTemplate.opsForValue().get(saveOrderKye);final String ip = request.getRemoteAddr();new Thread( ()->{if (StringUtils.isBlank(sendValue)) {System.out.println("紧急短信,用户下单失败,请离开查找原因,ip地址是="+ip);//发送一个http请求,调用短信服务 TODOredisTemplate.opsForValue().set(saveOrderKye, "save-order-fail", 20, TimeUnit.SECONDS);}else{System.out.println("已经发送过短信,20秒内不重复发送");}}).start();

6、高级篇幅之深入源码剖析Hystrix降级策略和调整
简介:源码分析Hystrix降级策略和调整

1、查看默认讲解策略 HystrixCommandProperties1)execution.isolation.strategy   隔离策略THREAD 线程池隔离 (默认)SEMAPHORE 信号量信号量适用于接口并发量高的情况,如每秒数千次调用的情况,导致的线程开销过高,通常只适用于非网络调用,执行速度快2)execution.isolation.thread.timeoutInMilliseconds  超时时间默认 1000毫秒3)execution.timeout.enabled 是否开启超时限制 (一定不要禁用)4)execution.isolation.semaphore.maxConcurrentRequests 隔离策略为 信号量的时候,如果达到最大并发数时,后续请求会被拒绝,默认是10官方文档:https://github.com/Netflix/Hystrix/wiki/Configuration#execution.isolation.strategy2、调整策略超时时间调整hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 4000

7、断路器Dashboard监控仪表盘实战
简介:讲解断路器Dashboard基础使用和查看
1、加入依赖

org.springframework.cloud
spring-cloud-starter-netflix-hystrix-dashboard

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>2、启动类增加注解@EnableHystrixDashboard3、配置文件增加endpoint

management:
endpoints:
web:
exposure:
include: “*”

4、访问入口http://localhost:8781/hystrixHystrix Dashboard输入: http://localhost:8781/actuator/hystrix.stream 参考资料默认开启监控配置https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-security-actuator配置文件类:spring-configuration-metadata.json

8、断路器监控仪表参数讲解和模拟熔断
简介:讲解 断路器监控仪表盘参数和模拟熔断

1、sse  server-send-event推送到前端资料:https://github.com/Netflix/Hystrix/wiki/Dashboard

第六章 微服务网关zuul开发实战

1、微服务网关介绍和使用场景
简介:讲解网关的作用和使用场景 (画图)

1)什么是网关API Gateway,是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求、鉴权、监控、缓存、限流等功能统一接入智能路由AB测试、灰度测试负载均衡、容灾处理日志埋点(类似Nignx日志)流量监控限流处理服务降级安全防护鉴权处理监控机器网络隔离2)主流的网关zuul:是Netflix开源的微服务网关,和Eureka,Ribbon,Hystrix等组件配合使用,Zuul 2.0比1.0的性能提高很多kong: 由Mashape公司开源的,基于Nginx的API gatewaynginx+lua:是一个高性能的HTTP和反向代理服务器,lua是脚本语言,让Nginx执行Lua脚本,并且高并发、非阻塞的处理各种请求

2、SpringCloud的网关组件zuul基本使用
简介:讲解zuul网关基本使用

1、加入依赖2、启动类加入注解 @EnableZuulProxy默认集成断路器  @EnableCircuitBreaker默认访问规则  http://gateway:port/service-id/**例子:默认 /order-service/api/v1/order/save?user_id=2&product_id=1自定义 /xdclass_order/api/v1/order/save?user_id=2&product_id=1自定义路由转发:zuul:routes:order-service: /apigateway/**环境隔离配置:需求 :不想让默认的服务对外暴露接口/order-service/api/v1/order/save配置:zuul: ignored-patterns:- /*-service/api/v1/order/save

3、高级篇幅之Zuul常用问题分析和网关过滤器原理分析

简介:讲解Zuul网关原理和过滤器生命周期,1、路由名称定义问题路由映射重复覆盖问题2、Http请求头过滤问题3、过滤器执行顺序问题 ,过滤器的order值越小,越先执行4、共享RequestContext,上下文对象

4、自定义Zuul过滤器实现登录鉴权实战
简介:自定义Zuul过滤器实现登录鉴权实战

1、新建一个filter包2、新建一个类,实现ZuulFilter,重写里面的方法3、在类顶部加注解,@Component,让Spring扫描

5、高级篇幅之高并发情况下接口限流特技
简介:谷歌guava框架介绍,网关限流使用

1、nginx层限流2、网关层限流

6、Zuul微服务网关集群搭建
简介:微服务网关Zull集群搭建

1、nginx+lvs+keepalive
https://www.cnblogs.com/liuyisai/p/5990645.html

第七章 分布式链路追踪系统Sleuth和ZipKin实战

1、微服务下的链路追踪讲解和重要性简介:讲解什么是分布式链路追踪系统,及使用好处2、SpringCloud的链路追踪组件Sleuth实战简介:讲解分布式链路追踪组件Sleuth实战1、官方文档http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#sleuth-adding-project2、什么是Sleuth一个组件,专门用于记录链路数据的开源组件[order-service,96f95a0dd81fe3ab,852ef4cfcdecabf3,false]1、第一个值,spring.application.name的值2、第二个值,96f95a0dd81fe3ab ,sleuth生成的一个ID,叫Trace ID,用来标识一条请求链路,一条请求链路中包含一个Trace ID,多个Span ID3、第三个值,852ef4cfcdecabf3、spanid 基本的工作单元,获取元数据,如发送一个http4、第四个值:false,是否要将该信息输出到zipkin服务中来收集和展示。3、添加依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency>3、SpringCloud的链路追踪组件Sleuth常见问题说明简介:讲解分布式链路追踪组件Sleuth常见问题说明4、可视化链路追踪系统Zipkin部署简介:讲解Zipkin的介绍和部署1、什么是zipkin官网:https://zipkin.io/大规模分布式系统的APM工具(Application Performance Management),基于Google Dapper的基础实现,和sleuth结合可以提供可视化web界面分析调用链路耗时情况         2、同类产品鹰眼(EagleEye)CATtwitter开源zipkin,结合sleuthPinpoint,运用JavaAgent字节码增强技术StackDriver Trace (Google) 3、开始使用https://github.com/openzipkin/zipkinhttps://zipkin.io/pages/quickstart.htmldocker run -d -p 9411:9411 openzipkin/zipkinzipkin组成:Collector、Storage、Restful API、Web UI组成4、知识拓展:OpenTracingOpenTracing 已进入 CNCF,正在为全球的分布式追踪,提供统一的概念和数据标准。 通过提供平台无关、厂商无关的 API,使得开发人员能够方便的添加(或更换)追踪系统的实现。推荐阅读:http://blog.daocloud.io/cncf-3/https://www.zhihu.com/question/27994350https://yq.aliyun.com/articles/514488?utm_content=m_433475、高级篇幅之链路追踪组件Zipkin+Sleuth实战简介:使用Zipkin+Sleuth业务分析调用链路分析实战1、文档http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#_sleuth_with_zipkin_via_httpsleuth收集跟踪信息通过http请求发送给zipkin server,zipkinserver进行跟踪信息的存储以及提供Rest API即可,Zipkin UI调用其API接口进行数据展示默认存储是内存,可也用mysql、或者elasticsearch等存储2、加入依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId></dependency>里面包含 spring-cloud-starter-sleuth、spring-cloud-sleuth-zipkin3、文档说明:http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#_features_24、配置zipkin.base-url5、配置采样百分闭spring.sleuth.sampler推荐资料:https://blog.csdn.net/jrn1012/article/details/77837710

第八章 微服务核心知识分布式配置中心Config实战

1、微服务下的分布式配置中心简介:讲解什么是配置中心及使用前后的好处 (画图)什么是配置中心:一句话:统一管理配置, 快速切换各个环境的配置相关产品:百度的disconf 地址:https://github.com/knightliao/disconf阿里的diamand地址:https://github.com/takeseem/diamondspringcloud的configs-server:地址:http://cloud.spring.io/spring-cloud-config/推荐干货文章:http://jm.taobao.org/2016/09/28/an-article-about-config-center/2、SpringCloud的配置中心组件config-server实战简介:讲解SpringCloud配置中心config-server实战1、新建项目,创建config-server2、启动类增加注解@EnableConfigServer3、使用git服务器结合Config搭建分布式配置中心简介:讲解使用git服务器结合Config搭建分布式配置中心1、默认使用git存储配置中心使用git服务器,可以自己搭建gitlab服务器或者使用github、开源中国git、阿里云git794666918@qq.comxdclass.net123https://gitee.com/waitforxy/config_cloud.git2、配置文件添加配置spring:application:name: config-server#git配置cloud:config:server:git:uri: https://gitee.com/waitforxy/config_cloudusername: 794666918@qq.compassword: xdclass.net123#超时时间timeout: 5#分支default-label: master3、访问方式(一定要注意语法,如果有问题,会出错)多种访问路径,可以通过启动日志去查看例子 http://localhost:9100/product-service.yml/{name}-{profiles}.properties/{name}-{profiles}.yml/{name}-{profiles}.json/{label}/{name}-{profiles}.ymlname 服务器名称profile 环境名称,开发、测试、生产lable 仓库分支、默认master分支

4、分布式配置中心客户端使用实战
简介:微服务里面客户端接入配置中心实战
官方文档:http://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html#_spring_cloud_config_client

 1、加入依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-client</artifactId></dependency>2、修改对应服务的配置文件,把application.yml 改为 bootstrap.yml#指定注册中心地址eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/#服务的名称spring:application:name: product-service#指定从哪个配置中心读取cloud:config:discovery:service-id: CONFIG-SERVERenabled: trueprofile: test#建议用lable去区分环境,默认是lable是master分支#label: test注意点:1.配置文件要用bootstrap.yml2.默认读取文件名是 服务名称

第九章 微服务消息总线Bus结合消息队列RabbitMQ实战

1、消息总线Bus介绍和使用场景简介:讲解消息总线Bus介绍和使用场景1、什么是消息一个事件,需要广播或者单独传递给某个接口2、为什么使用这个配置更新了,但是其他系统不知道是否更新2、消息队列和RabbitMQ基础介绍简介:消息队列和RabbitMQ基础介绍1、消息队列介绍参考:https://www.cnblogs.com/linjiqin/p/5720865.html2、同类产品ActiveMQRocketMQKafka等3、SpringCloud默认推荐使用RabbitMQ4、RabbitMQ介绍    官方文档:http://www.rabbitmq.com/getstarted.html中文文档:http://rabbitmq.mr-ping.com/3、实战系列使用Docker搭建RabbitMQ3.7简介:使用Docker安装RabbitMQ1、如果对Docker没基础,课程后续有讲解Docker,可以先跳转过去学习Docker2、安装步骤1)拉取镜像:docker pull rabbitmq:management2)查看当前镜像列表:docker images3)删除指定镜像:docker rmi  IMAGE_ID -f (如果需要强制删除加 -f)4)创建容器docker run -d --name="springtest" -p 5672:5672 -p 15672:15672 rabbitmq:managementdocker run -d -p 15672:15672 myrabbitmq参数讲解: run: 创建一个新的容器并运行一个命令-d: 后台运行容器,并返回容器ID-p: 端口映射,格式为:主机(宿主)端口:容器端口--name="rabbitmq": 为容器指定一个名称3、RabbitMQ默认创建了一个 guest 用户,密码也是 guest, 如果访问不了记得查看防火墙,端口或者云服务器的安全组管理后台:http://127.0.0.1:15672其他安装方式:
Linux安装:https://blog.csdn.net/qq_34021712/article/details/72567786
windows安装:http://www.rabbitmq.com/install-windows.htmlhttps://blog.csdn.net/liyuejin/article/details/784105864、高级篇幅消息总线整合配置中心架构流程图简介:讲解消息总线Bus结合config组件搭建配置中心项目架构图和操作流程启动rabbitmq: docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:managementrabbitmq默认是5672,所以改为5672端口1、config-client加入依赖<!--配置中心结合消息队列--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency>官方文档:http://cloud.spring.io/spring-cloud-bus/single/spring-cloud-bus.html#_bus_refresh_endpoint文档里面 暴露端点 management.endpoints.web.exposure.include=bus-refresh2、在配置文件中增加关于RabbitMQ的连接(如果是本机,则可以直接启动,采用默认连接配置)spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest#暴露全部的监控信息management:endpoints:web:exposure:include: "*"3、需要刷新配置的地方,增加注解 @RefreshScope4、访问验证 post方式:http://localhost:8773/actuator/bus-refresh5、动态刷新配置: 在开发和测试环境使用,尽量少在生产环境使用5、微服务相关项目改造配置中心
简介:把项目改造成配置中心讲解1、git里面新增对应项目的配置文件,都要添加下面的配置#服务的名称spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest#暴露全部的监控信息management:endpoints:web:exposure:include: "*"2、项目里面添加maven依赖<!--配置中心客户端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-client</artifactId></dependency><!--config server--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency>3、修改application.properties为bootstrap.yml 并拷贝配置文件#指定注册中心地址eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/#服务的名称spring:application:name: order-service#指定从哪个配置中心读取cloud:config:discovery:service-id: CONFIG-SERVERenabled: trueprofile: test4、各个项目启动顺序1)注册中心2)配置中心3)对应的服务:商品服务、订单服务。。。4)启动网关

第十章、SpringCloud课程内容上半部分总结

1、微服务核心知识内容回顾简介:回顾SpringCloud前面10章的基础内容1)介绍微服务的基础知识,核心组件,CAP原理2)SpringCloud注册中心 Eureka3)product-service / order-service4) 伪RPC Ribbon / feign 5) hystrix熔断6) 服务网关介绍,zuul7)配置中心config-server2、微服务下半部分知识 云服务器和Docker容器简介:讲解云服务器和容器知识

第十一章 阿里云ECS服务器介绍和网络知识讲解

1、云服务器介绍和阿里云服务器ECS服务器选购简介:什么是云服务器及目前主要的几个厂商介绍1、阿里云、腾讯云、亚马逊云阿里云:https://www.aliyun.com/腾讯云:https://cloud.tencent.com/亚马逊云:https://aws.amazon.com/2、阿里云服务器远程登录和常用工具简介:讲解阿里云服务器登录使用和常见终端工具1、windows工具   putty,xshell, security参考资料:https://jingyan.baidu.com/article/e75057f210c6dcebc91a89dd.htmlhttps://www.jb51.net/softjc/88235.html2、苹果系统MAC: 通过终端登录 ssh root@ip  回车后输入密码ssh root@120.25.1.383、可以尝试自己通过百度进行找文档, 安装mysql jdk  nginx maven git redis elk

3、互联网架构知识之网站部署上线基础准备
简介:讲解应用部署到可以公网访问需要步骤

     1、一个http请求的故事2、什么是cname和a记录A记录和CNAME只可以同时生效一个,A记录优先3、域名和ip的关系,DNS作用参考资料:https://blog.csdn.net/benbenzhuhwp/article/details/44704319https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&ch=1&tn=98050039_dg&wd=%E4%B8%80%E4%B8%AAhttp%E8%AF%B7%E6%B1%82%E7%9A%84%E8%AF%A6%E7%BB%86%E8%BF%87%E7%A8%8B&rsv_pq=80a65c5f00005961&rsv_t=a5fcWreuJzILdSwr4gI8pFqlO7HSu5BlhjwalyVzPiV9w2L%2BKEj78pPi1Qn6Vx4wXxI&rqlang=cn&rsv_enter=1&rsv_sug3=8&rsv_sug1=8&rsv_sug7=100&sug=%25E4%25B8%2580%25E4%25B8%25AAhttp%25E8%25AF%25B7%25E6%25B1%2582%25E7%259A%2584%25E8%25AF%25A6%25E7%25BB%2586%25E8%25BF%2587%25E7%25A8%258B&rsv_n=1

4、域名购买和配置解析实战
简介:域名购买和配置解析实战

    1、购买域名,备案阿里云 备案地址:https://beian.aliyun.com/2、购买服务器,阿里云,腾讯云,亚马逊云aws3、配置域名解析到服务器

第十二章 微服务必备技能Docker容器基础篇幅

1、微服务下的Docker介绍和使用场景简介:Docker介绍和使用场景1、什么是Dokcer百科:一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口;使用go语言编写,在LCX(linux容器)基础上进行的封装简单来说:1)就是可以快速部署启动应用2)实现虚拟化,完整资源隔离3)一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用)2、为什么要用1、提供一次性的环境,假如需要安装Mysql,则需要安装很多依赖库、版本等,如果使用Docker则通过镜像就可以直接启动运行   2、快速动态扩容,使用docker部署了一个应用,可以制作成镜像,然后通过Dokcer快速启动3、组建微服务架构,可以在一个机器上模拟出多个微服务,启动多个应用4、更好的资源隔离和共享一句话:开箱即用,快速部署,可移植性强,环境隔离2、Linux云服务器Centos7安装Docker实战简介:讲解阿里云ECS服务安装Docker实战Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息命令: lsb_release -a 阿里云安装手册:https://help.aliyun.com/document_detail/51853.html?spm=a2c4g.11186623.6.820.RaToNY常见问题:https://blog.csdn.net/daluguishou/article/details/520802503、Docker仓库、镜像、容器核心知识讲解简介:快速掌握Dokcer基础知识,1、概念:Docker 镜像 - Docker images:容器运行时的只读模板,操作系统+软件运行环境+用户程序class User{private String userName;private int age;}Docker 容器 - Docker containers:容器包含了某个应用运行所需要的全部环境User user = new User()Docker 仓库 - Docker registeries: 用来保存镜像,有公有和私有仓库,好比Maven的中央仓库和本地私服镜像仓库:    (参考)配置国内镜像仓库:https://blog.csdn.net/zzy1078689276/article/details/77371782对比面向对象的方式Dokcer 里面的镜像 : Java里面的类 ClassDocker 里面的容器 : Java里面的对象 Object通过类创建对象,通过镜像创建容器4、Docker容器常见命令实战简介:讲解Docker在云服务上的实际应用1、 常用命令(安装部署好Dokcer后,执行的命令是docker开头),xxx是镜像名称搜索镜像:docker search xxx列出当前系统存在的镜像:docker images拉取镜像:docker pull xxxxxx是具体某个镜像名称(格式 REPOSITORY:TAG)REPOSITORY:表示镜像的仓库源,TAG:镜像的标签运行一个容器:docker run -d --name "xdclass_mq" -p 5672:5672 -p 15672:15672 rabbitmq:managementdocker run - 运行一个容器-d 后台运行-p 端口映射rabbitmq:management  (格式 REPOSITORY:TAG),如果不指定tag,默认使用最新的--name "xxx"列举当前运行的容器:docker ps检查容器内部信息:docker inspect 容器名称删除镜像:docker rmi IMAGE_NAME强制移除镜像不管是否有容器使用该镜像 增加 -f 参数,停止某个容器:docker stop 容器名称启动某个容器:docker start 容器名称移除某个容器: docker rm 容器名称 (容器必须是停止状态)文档:https://blog.csdn.net/permike/article/details/518795785、实战应用之使用Docker部署Nginx服务器简介:讲解使用Docker部署Nginx服务器实战1、获取镜像 docker run (首先会从本地找镜像,如果有则直接启动,没有的话,从镜像仓库拉起,再启动)docker search nignx2、列举docker images3、拉取docker pull nignx3、启动docker run -d --name "xdclass_nginx" -p 8088:80 nginxdocker run -d --name "xdclass_nginx2" -p 8089:80 nginxdocker run -d --name "xdclass_nginx3" -p 8090:80 nginx4、访问如果是阿里云服务,记得配置安全组,腾讯云也需要配置,这个就是一个防火墙6、公司中Docker镜像仓库使用讲解简介:讲解一般公司中镜像仓库在的使用1、为啥要用镜像仓库2、官方公共镜像仓库和私有镜像仓库公共镜像仓库:官方:https://hub.docker.com/,基于各个软件开发或者有软件提供商开发的非官方:其他组织或者公司开发的镜像,供大家免费试用私有镜像仓库:用于存放公司内部的镜像,不提供给外部试用; SpringCloud 开发了一个支付系统 -》做成一个镜像 (操作系统+软件运行环境+用户程序)7、高级篇幅之构建自己的镜像仓库简介:使用阿里云搭建自己的镜像仓库1、阿里云镜像仓库:https://dev.aliyun.com/search.html点击管理控制台-》初次使用会提示开通,然后设置密码xdclass.net1232、使用阿里云私有镜像仓库1)登录: docker login --username=794666918@qq.com registry.cn-shenzhen.aliyuncs.com2) 推送本地镜像:docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:[镜像版本号]例子:docker tag 2f415b0e9a6e registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.23)拉取镜像线上服务器拉取镜像:docker login --username=794666918@qq.com registry.cn-shenzhen.aliyuncs.comdocker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2启动容器:docker run -d --name "xdclass_mq" -p 5672:5672 -p 15672:15672 2f415b0e9a6e

第十三章 微服务高级篇幅SpringCloud和Docker整合部署

第1课 高级篇幅之构建SpringBoot应用docker镜像上集简介:使用Docker的maven插件,构建springboot应用官方文档:https://spring.io/guides/gs/spring-boot-docker/1、步骤:maven里面添加配置pom.xml<properties><docker.image.prefix>xdclass</docker.image.prefix></properties><build><finalName>docker-demo</finalName><plugins><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.3.6</version><configuration><repository>${docker.image.prefix}/${project.artifactId}</repository><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration></plugin></plugins></build>配置讲解Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}第2课 高级篇幅之构建SpringBoot应用docker镜像下集简介:打包SpringCloud镜像并上传私有仓库并部署1、创建Dockerfile,默认是根目录,(可以修改为src/main/docker/Dockerfile,如果修则需要制定路径)什么是Dockerfile : 由一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜像FROM openjdk:8-jdk-alpineVOLUME /tmpARG JAR_FILECOPY ${JAR_FILE} app.jarENTRYPOINT ["java","-jar","/app.jar"]参数讲解:FROM <image>:<tag> 需要一个基础镜像,可以是公共的或者是私有的, 后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令VOLUME  配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录 ARG  设置编译镜像时加入的参数, ENV 是设置容器的环境变量COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点ENTRYPOINT 容器启动时执行的命令EXPOSE 8080 暴露镜像端口2、构建镜像mvn install dockerfile:build打标签docker tag a1b9fc71720d registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808推送到镜像仓库docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808应用服务器拉取镜像docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808docker run -d --name xdclass_docker_demo1 -p 8099:8080  a1b9fc71720d3、查看启动日志 docker logs -f  containerid文档:https://yeasy.gitbooks.io/docker_practice/image/dockerfile/第3课 实战系列之注册中心打包Docker镜像简介:讲解使用Docker打包注册中心,上传私有镜像仓库并部署1、新增maven插件<properties><docker.image.prefix>xdclass</docker.image.prefix></properties><build><finalName>docker-demo</finalName><plugins><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.3.6</version><configuration><repository>${docker.image.prefix}/${project.artifactId}</repository><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration></plugin></plugins></build>2、新建DockerfileFROM openjdk:8-jdk-alpineVOLUME /tmpARG JAR_FILECOPY ${JAR_FILE} app.jarENTRYPOINT ["java","-jar","/app.jar"]3、打包:mvn install dockerfile:build4、推送阿里云镜像仓库阿里云镜像仓库:https://dev.aliyun.com/search.html

docker tag 062d2ddf272a registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:eureka-v20180825
docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:eureka-v20180825
docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:eureka-v20180825

 5、查看日志 docker logs -f  containerid第4课 实战系列之部署RabbitMQ和配置中心打包Docker镜像简介:讲解使用Docker打包配置中心,和部署RabbitMQ1、服务地址 ssh root@47.106.120.173部署  rabbitmq: docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:management2、推送镜像docker tag 0f636543904e registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:config-server-v20180825docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:config-server-v20180825docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:config-server-v201808255、常见问题处理之升级云服务器简介:处理上节课出现的问题,升级服务器注意事项1、升级云服务器配置(购买配置后需要重启机器才生效)2、启动完成后,需要开启docker指令: systemctl  start docker3、所有对外的都要经过网关才可以对外,应用间通信(除非跨机房)都用内网通信6、实战系列之Docker部署Redis简介:使用Docker安装redis1、搜索镜像 docker search redis2、拉取 docker pull docker.io/redis3、启动 docker run --name "xd_redis" -p 6379:6379 -d 4e8db158f18d参考:docker run --name "xd_redis" -p 6379:6379 -d 4e8db158f18d --requirepass "123456" -v $PWD/data:/data4、访问redis容器里面,进行操作docker exec -it 295058d2b92e redis-cli7、生产环境常见问题之配置中心访问简介:讲解生产环境部署常见问题,配置中心访问路径变化1、配置中心访问出错,路径不对解决:修改所有的注册中心,增加下面配置instance:instance-id: ${spring.cloud.client.ip-address}:${server.port}prefer-ip-address: truedocker tag 50a12cd66210 registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:config-server-v201808268、实战系列之打包Docker镜像打包商品服务和订单服务、网关 简介:打包Docker镜像部署商品服务和订单服务、网关注意:1、maven打包构建,会触发单元测试,部分情况可以跳过,mvn install -Dmaven.test.skip=true dockerfile:build2、生产环境不能用localhost 或者 127.0.0.1, 一定要用内网通信ip (虚拟主机映射 hosts)9、实战系列云服务器部署网关、订单、商品服务简介:云服务部署商品服务、订单服务、网关服务1、拉取镜像、启动访问路径http://47.106.120.173:8781/api/v1/order/save?product_id=5&user_id=5http://47.106.120.173:9000/apigateway/order/api/v1/order/save?user_id=5&product_id=3&token=232serer

记微服务架构实战学习笔记相关推荐

  1. 《SpringCloud微服务架构》学习笔记

    一.SpringCloud概述 说到SpringCloud,相信大家都不陌生,它主要是用来管理微服务的,说直白有点,它就是基于SpringBoot实现的一套微服务治理工具包,它并不是一个框架,而是一系 ...

  2. 微服务架构设计模式学习笔记——六边形架构

    目录 一 软件架构的4+1模型 二 分层架构风格 三 六边型架构 四 代码示例 五 总结 一 软件架构的4+1模型 先上图,软件架构的4+1模型如图1.1所示: 图1.1 4+1模型 注:上图中的元素 ...

  3. 《Spring Cloud 与 Docker 微服务架构实战》笔记

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. PS:springcloud系列文章见:springcloud 系列,一看就会 . 在此,只是记录细 ...

  4. Spring Cloud与Docker微服务架构实战--阅读笔记

  5. 好家伙,阿里P8撰写的Java微服务架构全栈笔记GitHub一夜飞到榜首

    Java微服务作为当下最常用的架构技术,快速实现编程开发而且维护起来十分的方便,可以简单是实现高可用,分布式开发而且也很安全! 今天给大家分享的这份<Java微服务架构全栈笔记>,用140 ...

  6. SpringCloud与Docker微服务架构实战pdf

    下载地址:网盘下载 作为一部帮助大家实现微服务架构落地的作品,<Spring Cloud与Docker微服务架构实战>覆盖了微服务理论.微服务开发框架(Spring Cloud)以及运行平 ...

  7. 【福利】赠书:Spring Cloud与Docker微服务架构实战(第2版)

    本次福利送出好友周立的第二版书籍! 正在关注和使用Spring Cloud的朋友们不要错过哦! 内容提要 <Spring Cloud与Docker微服务架构实战(第2版)>基于Spring ...

  8. 微服务 前台调用后台的慢的原因_20年IT农民工分享SpringCloud微服务架构实战文档...

    前言 越来越多的企业使用 SpringCloud 实现微服务架构设计.我们可以看到这样一种现象:不管是全新开发,还是系统重构,大家似乎都在争先恐后地使用微服务.对于一个Java开发人员来说,学习微服务 ...

  9. 疯狂Spring Cloud微服务架构实战

    网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击"普通下载" ...

最新文章

  1. java的classloader引用实例_通过实例Java ClassLoader原理
  2. Splunk安装和配置及源码编译安装SVN
  3. 图解python专业教程_图解Python视频教程(基础篇)课程
  4. 俯瞰云原生,这便是供应层
  5. pytorch from_numpy
  6. httpclient 3.0初步研究
  7. mac系统安装python(2.7)requests库
  8. java 的 sort()_Java中Array.sort()的几种用法
  9. PAT 1012 数字分类
  10. android游戏手柄开发,android游戏手柄开发测试代码
  11. 什么是计算机剪贴板介绍,剪贴板功能介绍
  12. python使用opencv进行身份证信息识别_基于opencv和tesseract实现身份证扫描件的身份证号码提取试验...
  13. 产品-Axure9英文版,轮播图效果
  14. inno setup 卸载注册表_Inno Setup Compiler卸载时删除注册表
  15. 以前的我“我是废物...”,现在的我“我是废物o(* ̄︶ ̄*)o” 2020.11.27日记
  16. 微信小程序(沧海一笑)
  17. Redis遇到过的问题(Could not get a resource from the pool)
  18. ❤️ 6个Python办公黑科技,工作效率提升100倍!HR小姐姐都馋哭了(附代码)❤️
  19. 使用PDFLib生成PDF文档(C语言版)
  20. java输出罗马数字,【Java】【刷穿 LeetCode】13. 罗马数字转整数(简单)

热门文章

  1. angular2 简述
  2. undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::all
  3. 面试10家拿到了7家Offer,到底经历了什么?
  4. linux 文件 查找内容替换,linux递归查找文件内容并替换
  5. M的编程备忘录之Linux——基础开发工具
  6. HDU2036 改革春风吹满地
  7. 一把王者的时间就写完了一个nginx的web集群项目
  8. 计算机的桌面图标都没有了怎么办,电脑桌面图标都没了怎么办?
  9. python bs4 BeautifulSoup
  10. 【java】在线支付