SpringCloud之Config服务配置中心
Config服务端配置git由于SpringCloud Config默认使用Git来存储配置文件(也有其它方式,比如支持svn和本地文件,但最推荐的还是Git,而且使用的是http/https访问的形式)
用你自己的账号在Github上新建一个名为sprincloud-config的新Repository
仓库中添加config-dev.yml,config-prod.yml,config-test.yml,三个文件内容只有名字不同。创建dev分支,将文件中的master全都修改为dev
文件内容
12config: info: "master branch,springcloud-config/config-dev.yml version=1"
clone到本地使用git clone命令
Model新建Module模块cloud-config-center-3344它既为Cloud的配置中心模块cloudConfig Center
pom123456789101112131415161718192021222324252627282930313233 ...
SpringCloud之Gateway服务网关
yml配置网关路由Gateway网关路由有两种配置方式,一种用yml配置
新建cloud-gateway-gateway9527模块
pom不要引入spring web依赖,否则启动不了
123456789101112131415161718192021222324252627282930313233343536373839<dependencies> <!--新增gateway--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>com.kylin</groupId> <artifactId>cloud-api-co ...
SpringCloud之Hystrix服务降级
简介分布式系统面临的问题复杂分布式体系结构中的应用程序有许多依赖项,每个依赖项在某些时候都不可避免地会失败。如果主机应用程序没有与这些外部故障隔离,那么它有可能被他们拖垮。
例如,对于一个依赖于30个服务的应用程序,每个服务都有99.99%的正常运行时间,你可以期望如下:
99.9930 = 99.7% 可用
也就是说一亿个请求的0.03% = 3000000 会失败
如果一切正常,那么每个月有2个小时服务是不可用的
现实通常是更糟糕
当一切正常时,请求看起来是这样的:
当其中有一个系统有延迟时,它可能阻塞整个用户请求:
在高流量的情况下,一个后端依赖项的延迟可能导致所有服务器上的所有资源在数秒内饱和(PS:意味着后续再有请求将无法立即提供服务
服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.
对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资 ...
SpringCloud之OpenFeign服务接口调用
OpenFeign简介地址https://github.com/spring-cloud/spring-cloud-openfeign
Feign是一个声明式的Web Service客户端。它的出现使开发Web Service客户端变得很简单。使用Feign只需要创建一个接口加上对应的注解,比如:FeignClient注解。Feign有可插拔的注解,包括Feign注解和JAX-RS注解。
Feign也支持编码器和解码器,Spring Cloud Open Feign对Feign进行增强支持Spring MVC注解,可以像Spring Web一样使用HttpMessageConverters等。
Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。
Feign旨在使编写Java Http客户端变得更容易
前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模 ...
SpringCloud之Ribbon负载均衡服务调用
简介官网https://github.com/Netflix/ribbon/wiki/Getting-Started
Spring Cloud Ribbon是基于Netfix Ribbon实现的一套客户端负载均衡的工具
简单的说,Ribbon是Netfix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列处Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。
Ribbon目前也进入维护模式
未来想使用Spring Cloud Loadbalancer替换Ribbon
负载均衡LB负载均衡(Load Balance)是什么?
简单来说就是将用户的请求平摊的分配到多个服务上,从而达到系统的高可用(HA)。常见的负载均衡有软件Nginx,LVS,硬件F5等。
Ribbon本地负载均衡客户端 VS Nginx服务端负载均衡的区别
Nginx是服务器负载均 ...
SpringCloud之Consul服务注册与发现
Consul简介
Consul 是 HashiCorp 公司推出的开源产品,用于实现分布式系统的服务发现、服务隔离、服务配置,这些功能中的每一个都可以根据需要单独使用,也可以同时使用所有功能。Consul 官网目前主要推 Consul 在服务网格中的使用。
与其它分布式服务注册与发现的方案相比,Consul 的方案更“一站式”——内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具。Consul 本身使用 go 语言开发,具有跨平台、运行高效等特点,也非常方便和 Docker 配合使用。
Consul 的主要特点有:Service Discovery : 服务注册与发现,Consul 的客户端可以做为一个服务注册到 Consul,也可以通过 Consul 来查找特定的服务提供者,并且根据提供的信息进行调用。
Health Checking: Consul 客户端会定期发送一些健康检查数据和服务端进行通讯,判断客户端的状态、内存使用情况是否正常,用来监控整个集群的状态,防止服务转发到故障的服务上面。
KV Store: ...
SpringCloud之Zookeeper服务注册与发现
Linux安装Zookeeperzookeeper是一个分布式协调工具,可以实现注册中心功能
zookeeper服务器取代Eureka服务器,zk作为服务注册中心
windows安装可以看https://www.kylin.show/1129.html
Zookeeper官网https://zookeeper.apache.org/
下载地址https://zookeeper.apache.org/releases.html
下载后安装上传到Linux系统中,解压即可tar -zxvf 压缩包名
解压zookeeper,运行/bin/zkServer.sh ,初次运行会报错,没有zoo.cfg配置文件。将zoo_sample.cfg复制一份并改名成zoo.cfg即可
接着cd到bin目录sh zkServer.sh start运行zookeeper,运行在2181端口。(记得开放端口)
sh zkServer.sh status查看运行状态
使用sh zkCli.sh连接zookeeper
安装完成!
显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKee ...
SpringCloud之Eureka服务注册与发现
什么是服务治理?Spring Cloud封装了Netfix公司开发的Eureka模块来实现服务治理
在传统的rpc远程调用框架中,管理每个服务服务之间的依赖关系比较复杂,管理比较复杂,就像我们之前的基础项目一样,虽然能实现功能,但是一旦服务多了起来就非常难管理,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用,负载均衡,容错等,实现服务发现与注册。
什么是服务注册与发现Eureka采用了CS的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接。这样系统的维护人员就可以通过Eureka Server来监控系统中各个微服务是否正常运行。
在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址 通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用RPC。远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服 ...
微服务架构与SpringCloud
微服务架构概述
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具本业务进行构建,并且能够独立的部署到生产环境,类生产环境等。另外,应当尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建。
微服务架构是一堆小服务的集合
每一个服务都可以作为一个单独的进程来运行
微服务的建模是围绕业务逻辑进行的
服务是独立部署的
微服务是去中心化的,也就是说是分布式的
SpringCloud
SpringCloud是分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶。SpringCloud已成为微服务开发的主流技术栈。
SpringCloud版本目前最新为H版
SpringCloud和SpringBoot的版本选择
此次项目的技术版本
SpringCloud各种组件的停更升级替换
...
axios详解
选择什么网络模块?Ajax选择一: 传统的Ajax是基于XMLHttpRequest(XHR)
为什么不用它呢?
非常好解释, 配置和调用方式等非常混乱.
编码起来看起来就非常蛋疼.
所以真实开发中很少直接使用, 而是使用jQuery-Ajax
jQuery-Ajax选择二: 在前面的学习中, 我们经常会使用jQuery-Ajax
相对于传统的Ajax非常好用.
为什么不选择它呢?
首先, 我们先明确一点: 在Vue的整个开发中都是不需要使用jQuery了.
那么, 就意味着为了方便我们进行一个网络请求, 特意引用一个jQuery, 你觉得合理吗?
jQuery的代码1w+行.
Vue的代码才1w+行.
完全没有必要为了用网络请求就引用这个重量级的框架.
Vue-resource选择三: 官方在Vue1.x的时候, 推出了Vue-resource.
Vue-resource的体积相对于jQuery小很多.
另外Vue-resource是官方推出的.
为什么不选择它呢?
在Vue2.0退出后, Vue作者就在GitHub的Issues中说明了去掉vue-resource ...