11 2018 档案
摘要:主从复制 概念 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中。 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的3306端口,通过网络发给MYSQL-B。 MYSQL-B收到后,写入本地日志系统B,然后一条条的将数据库事件在数据库中完成。 那么,MY
阅读全文
摘要:博主记录一次学习使用LCN的过程: 导入LCN的依赖jar包 使用LCN很简单 加个注解就OK了 搭建如下: LCN项目,先搭建事务协调者: 需要Redis,事务分组ID都是缓存到Redis中的 导入TxManager的整合项目,配置 Redis 信息: 用于缓存分组ID 启动项目的Eureka 然
阅读全文
摘要:分布式事务 背景 在微服务环境下,因为会根据不同的业务会拆分成不同的服务,比如会员服务、订单服务、商品服务等,让专业的人做专业的事情,每个服务都有自己独立的数据库,并且是独立运行,互不影响。但是每个服务中都有自己独立的数据源,即自己独立的本地事务。两个服务相互通讯的时候,两个本地事务互不影响,从而出
阅读全文
摘要:1.web安全常见攻击手段 xss sql注入 防盗链 csrf 上传漏洞 2. 信息加密与漏洞扫描 对称加密 非对称加密 3. 互联网API接口安全设计 4. 网站安全漏洞扫描与抓包分析 5. Https协议底层原理分析 6.电子商务风控与黑名单和白名单系统 7. 基于多种手打尽防御DDS攻击 通
阅读全文
摘要:五种网站跨域解决方案 1. 使用jsonp解决网站跨域 只能支持get 不支持post 2.使用HttpClient内部转发 效率低 发送两次请求 3.使用设置响应头允许跨域 4.基于Nginx搭建企业级API接口网关 保证域名和端口一直 以项目区分反向代理到真实服务器地址 5.使用Zuul搭建微服
阅读全文
摘要:什么是网站跨域 跨域原因产生:在当前域名请求网站中,默认不允许通过ajax请求发送其他域名。 五种网站跨域解决方案 1. 使用jsonp解决网站跨域 2.使用HttpClient内部转发 3.使用设置响应头允许跨域 4.基于Nginx搭建企业级API接口网关 5.使用Zuul搭建微服务API接口网关
阅读全文
摘要:1、创建CDN CNAME 指向CDN云厂商地址 2、使用域名转向到CDN云厂商地址 请求过来 通过cnd 分发到不同的服务器 如果有缓存的话 直接走了 CDN也可以实现安全功能,比如CDN实现防止DDOS,DNS负载均衡,实现web安全防御功能,比如黑名单和白名单 名词解释 CNAME记录(CNA
阅读全文
摘要:Web前端优化访问1.网站动静分离 动静分离 动态的资源和静态资源分别部署到不同的服务器上,使用Nginx实现静态服务器,因为nginx实现静态服务器访问速度的效果比tomcat实现静态服务器访问效果好很多。2.一定要使用浏览器缓存,客户端(浏览器)内置缓存技术,只要访问一次静态资源请求,都会缓存到
阅读全文
摘要:DNS域名解析过程 DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的ip地址。人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个
阅读全文
摘要:自定义注解 封装 如果需要让接口实现限流RateLimiter使用 网关:一般拦截所有的接口 实现限流 秒杀 抢购 或者大流量的接口才会实现限流。灵活 不是所有接口都需要限流 秒杀等接口需要限流 设计: 加注解的才可以实现限流 注解形式而不是网关形式 只有需要限流的才加这个注解 传统的方式整合Rat
阅读全文
摘要:RPC远程调用 可以跨平台 一般采用HTTP协议 底层使用socket技术 只要语言支持socket技术,就可以进行通讯 开放平台一般采用http协议,因为支持更多的语言 本地调用只支持Java语言与Java语言开发使用虚拟机与虚拟机之间通讯 rmi 高并发限流解决方案 为啥要限流? 秒杀 双十一
阅读全文
摘要:当大多数人在使用Tomcat时,多个HTTP服务会共享一个线程池,假设其中一个HTTP服务访问的数据库响应非常慢,这将造成服务响应时间延迟增加,大多数线程阻塞等待数据响应返回,导致整个Tomcat线程池都被该服务占用,甚至拖垮整个Tomcat。因此,如果我们能把不同HTTP服务隔离到不同的线程池,则
阅读全文
摘要:RPC远程调用过程中如何防止服务雪崩效用 微服务中如何保护服务 Hystrix是一个微服务中关于服务保护框架,在分布式中能够实现对服务容错。出错之后的预备方案 背景 在今天,基于SOA的架构已经大行其道。伴随着架构的SOA化,相关联的服务熔断、降级、限流等思想,也在各种技术讲座中频繁出现。本文将结合
阅读全文
摘要:https://github.com/ctripcorp/apollo/wiki/Apollo%E9%85%8D%E7%BD%AE%E4%B8%AD%E5%BF%83%E8%AE%BE%E8%AE%A1 提交就是 提交给客户端 刷新最新值到缓存 上图简要描述了Apollo客户端的实现原理: 这是一个
阅读全文
摘要:Spring Boot客户端对接阿波罗服务器端 核心源码都在这个压缩包里面 封装好了环境 运行shell脚本就ok了 下面进入到本地maven仓库: 远程仓库apollo的jar包 只能打包到本地或者公司的私服了 首先引入pom: 远程仓库没有: 把解压出来的 apollo master 运行成功
阅读全文
摘要:首先要求2g以上内存哈,JDK1.8 搭建数据库 创建表 apollo-build-scripts-master 整个阿波罗环境包 使用一个命令启动整个阿波罗服务环境 创建两个数据库 分别为:apolloconfigdb(存放配置文件信息)、apolloportaldb(门户网站) 建议数据库mys
阅读全文
摘要:1、下载 rpm -Uvh mysql57-community-release-el6-9.noarch.rpm 或 yum localinstall -y mysql57-community-release-el6-9.noarch.rpm 3.安装mysql yum install mysql-
阅读全文
摘要:传统配置文件有什么缺点 如果修改了配置文件,需要重新打包发布,而且每个环境变量配置文件复杂。 分布式配置中心 将配置文件注册到配置中心平台上,可以使用分布式配置中心实时更新配置文件,统一管理,不需要重新打包发布 后面定义的所有相关配置文件信息:除了 server port 其他的不写在本地哦 什么是
阅读全文
摘要:参考git上面的 springboot demo 创建maven工程: pom: controller 注: ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
阅读全文
摘要:如果XXL-Job admin挂掉就完蛋了,所有任务无法执行 调度中心:管理任务的触发 调度中心如何实现集群? XXL-Job如何实现集群? 底层已经实现好了!文档里面有的 如果想实现Job集群: DB配置一样 登录账号一样 集群机器时钟保持一致(单机集群忽略) 建议:推荐通过Nginx为调度中心集
阅读全文
摘要:参考:https://blog.csdn.net/zl544434558/article/details/47857343 在一个eclipse启动多个tomcat,修改tomcat的端口是不可以的,需要修改tomcat的shutdown端口、tomcat访问端口、jvm启动端口 修改步骤: 1 双
阅读全文
摘要:企业项目中所有的任务调动通过XXL-Job 去管理调度 路由策略类似于Nginx哦 XXL-Job实际封装的是Quartz。 关于分片广播,执行器集群部署时候,任务路由策略选择“”分片广播”情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务。可根据分片参数开发分片任务 分片广播:所有的Jo
阅读全文
摘要:如果集群: 保存后: 启动两个 job 第二个job的配置: 点击恢复: 点击执行! 成功!
阅读全文
摘要:分布式情况下定时任务会出现哪些问题? 分布式集群的情况下,怎么保证定时任务不被重复执行 分布式定时任务解决方案 ①使用zookeeper实现分布式锁 缺点(需要创建临时节点、和事件通知不易于扩展) ②使用配置文件做一个开关 缺点发布后,需要重启 ③数据库唯一约束,缺点效率低 ④使用分布式任务调度平台
阅读全文
摘要:在微服务中,Swagger是每个服务 比如会员服务,订单服务,支付服务 进行继承、 如何将整个微服务中的Swagger进行合成,同一台服务器上。 使用Zuul+Swagger实现管理整个微服务API文档 使用Nginx+Swagger以不同的项目区分跳转到不同的接口文档 Spring Boot支持对
阅读全文
摘要:随着微服务架构体系的发展和应用, 为了前后端能够更好的集成与对接,同时为了项目的方便交付,每个项目都需要提供相应的API文档。 来源:PC端、微信端、H5端、移动端(安卓和IOS端) 传统的API文档编写存在以下几个痛点: 对API文档进行更新的时候,需要通知前端开发人员,导致文档更新交流不及时;
阅读全文
摘要:Nginx+Zuul 一主一备 或者 轮训多个 在微服务中,所有服务请求都会统一到Zuul网关上。 Nginx 配置: 网关: yml: 启动类: 访问: 启动两个网关 81和82
阅读全文
摘要:传统方式将路由规则配置在配置文件中,如果路由规则发生了改变,需要重启服务器。这时候我们结合上节课内容整合SpringCloud Config分布式配置中心,实现动态路由规则。 将yml的内容粘贴到码云上: 添加到依赖: 可以实现手动刷新 yml中添加: 开启所有监控中心接口 启动类里面添加: yml
阅读全文
摘要:Zuul网关默认是实现负载均衡的,不需要任何配置。默认开启ribbon效果的 可以启启动两个服务端口,访问下。
阅读全文
摘要:过滤器放到网关: 重写的所有方法根据自己实际情况使用。 模拟有token的时候
阅读全文
摘要:统一由网关进行拦截判断 要不放到每个服务里面就很不合适了 冗余 主要的: zuul和eureka都是基于netfix里面开源出来的 网关有公网ip 其他的服务没有 但是 网关和服务处于局域网内 客户端访问时候经过网关 通过网关去实现 pom: yml: 启动类: member: order: 访问:
阅读全文
摘要:接口的分类: 开放接口:可以授权一些接口口OAuth2.0协议方式 第三方联合登录 内部接口: 一般只能在局域网中进行访问,服务与服务之间关系都在同一个微服务系统中。目的是为了保证安全问题 接口设计: 接口权限 开放 or 内部 幂等性 安全性 https 防止篡改数据(验证签名) 网关拦截接口实现
阅读全文
摘要:每个方法都配备一个fallback方法 不利于开发的 用类的方式 并且整个方法都是在同一个线程池里面的 主要对于client的修改: pom: 实现类 feign fallback类 启动类: yml 启动后: 感谢:https://www.jb51.net/article/138758.htm 这
阅读全文
摘要:默认情况下是不能及时获取变更的配置文件信息 Spring Cloud分布式配置中心可以采用手动或者自动刷新 1、手动需要人工调用接口 监控中心 2、消息总线实时通知 springbus 动态刷新数据 在SpringCloud中有手动刷新配置文件和实时刷新配置文件两种方式。 手动方式采用actuato
阅读全文
摘要:1、搭建git环境 目的:持久化存储配置文件信息 采用码云 创建后 继续创建文件夹 用来区分不同的项目 下面就是git上存放配置文件了。环境的区分 dev sit pre prd 开发 测试 预发布 准生产 sit 和 prd 环境 ConfigServer环境搭建: 注意Config server
阅读全文
摘要:Config架构 当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的配置文件的统一管理,而且还可以实现当配置文件发生变化的时候,系统会自动更新获取新的配置。 Git环境搭建 使用码云环境搭建git
阅读全文
摘要:基于Hystris解决雪崩效应: 1、服务降级: 防止用户一直等待,使用降级方式,调用FallBack(返回友好提示,不会去处理请求) 案例: 当前请求人数过多,请稍后重试 2、服务熔断:(和服务降级一起使用) 目的为了保护服务,在高并发情况下,如果请求达到了一定的极限(自己设置的预值)。自动开启服
阅读全文
摘要:服务保护利器 微服务高可用技术 大型复杂的分布式系统中,高可用相关的技术架构非常重要。 高可用架构非常重要的一个环节,就是如何将分布式系统中的各个服务打造成高可用的服务,从而足以应对分布式系统环境中的各种各样的问题,,避免整个分布式系统被某个服务的故障给拖垮。 比如: 服务间的调用超时 服务间的调用
阅读全文
摘要:关于雪崩效应: 默认情况下tomcat只有一个线程去处理客户端发送的所有请求。高并发情况下,如果客户端请求都在同一接口,tomcat的所有线程池去处理,导致其他接口服务访问不了,等待。 Tomcat有个线程池,每个线程去处理客户端发送每次请求。 在parent项目里面再创建一个项目,common E
阅读全文
摘要:应该重构接口信息(重点) toov5-parent 存放共同依赖信息 toov5-api api的只有接口没有实现 toov5-api-member toov5-api-order too5-member-impl api接口的实现 toov5-order-impl 1、 创建 parent的 po
阅读全文
摘要:feign介绍 Feign客户端是一个web声明式http远程调用工具,提供了接口和注解方式进行调用。 Spring Cloud 支持 RestTemplate Fetin Feign客户端实际开发中用的最多 ,易读性比较强。 主要调用部分: pom: yml: Feign controller 启
阅读全文
摘要:客户端负载均衡器 在SpringCloud中Ribbon负载均衡客户端,会从eureka注册中心服务器端上获取服务注册信息列表,缓存到本地。 让后在本地实现轮训负载均衡策略。 Ribbon与Nginx区别 1.服务器端负载均衡Nginx nginx是客户端所有请求统一交给nginx,由nginx进行
阅读全文
摘要:主要修改zk order的代码: 结果:
阅读全文
摘要:使用Consul来替换Eureka Consul简介 Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。 它具有很多优点。包括: 基于 raft 协议,比较简洁; 支持健康检查, 同时支持 HTTP 和 DNS 协议 支持跨数据中心的 WAN 集
阅读全文
摘要:Eureka已经闭源了,用zk可以替代之 Eureka 作为注册中心 Dubbo也是zk作为注册中心的 Zookeeper简介 Zookeeper是一个分布式协调工具,可以实现服务注册与发现、注册中心、消息中间件、分布式配置中心等。 公共pom: ###订单服务的端口号server: port: 8
阅读全文
摘要:Eureka详解 服务消费者模式 消费者启动的时候,使用服务别名,会发送一个rest请求到服务注册中心获取对应的服务信息,让后会缓存到本地jvm客户端中,同时客户端每隔30秒从服务器上更新一次。 可以通过 fetch-inte vall-seconds=30参数进行修以通过eureka.client
阅读全文
摘要:客户端分别yml: 查看eureka web控制管理界面:
阅读全文
摘要:注册中心集群 在微服务中,注册中心非常核心,可以实现服务治理,如果一旦注册出现故障的时候,可能会导致整个微服务无法访问,在这时候就需要对注册中心实现高可用集群模式。 Eureka集群相当简单:相互注册 Eureka高可用实际上将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组相互注册的服务
阅读全文
摘要:pom文件: yml文件: controller类 启动类 先启动eureka,再启动服务: 上面Eureka会帮助生成地址~ (通过获取服务名字 然后获取访问地址) 服务调用: 客户端调用工具 SpringCloud里面有rest Spring boot帮助整合的,底层封装了Http Client
阅读全文
摘要:pom: yml: Eureka: 目录结构: 启动后的访问:
阅读全文
摘要:服务治理SpringCloud Eureka 什么是服务治理 在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。 服务注册与发现 在服务注册与发现中,有一个注册中心,当服务器启动的时候,
阅读全文
摘要:https://springcloud.cc/spring-cloud-dalston.html SOA架构特确点: 1,依赖与中心化服务发现机制 2,SOA架构采用SOAP协议(HTTP+XML).XML传输协议比较占用宽带。整个XML报文中有非常大的冗余数据,所以在微服务中以json轻量级方式替
阅读全文
摘要:案例: Springboot 对RabbitMQ的支持 公共的pom: Producer: controller config producer yml: 启动类: Producer启动时候不会创建这个交换机哦,懒加载 启动后: Consumer: EmailConsumer: SMSConsume
阅读全文
摘要:consumer: 结果: 上面可以做个AOP~~ 可以参考下 Confirm模式
阅读全文
摘要:1. “ * ”的使用: 生产者: 消费者: 可以看到两个消费者都可以接收到 2.换成 “#” 生产者: 消费者: 总结 “*” 匹配一个词 “#”匹配多个词
阅读全文
摘要:pom.xml producer consumer: 运行结果: 绑定两个:
阅读全文
摘要:producer: Consumer1 Consumer2 运行结果: 睡眠少的(执行快的) 指定的多 注意 每个消费者 必须要应答 一下! 队列服务器没有收到应答 就不会发送下一个给消费者~
阅读全文
摘要:pom: 创建连接的工具类: Producer类 运行结果,看下这个队列 模拟get message consumer跟 producer基本类似 运行后的结果:
阅读全文
摘要:1、Eclipse 习惯ctrl + T 2、eclipse new出类对象 光标最右边 然后ctrl +1 或者 ctrl+2 等号左边的自动补齐
阅读全文
摘要:一、安装Erlang 1)安装erlang依赖的基本环境 2)下载安装Erlang 二、安装python和simplejson yum -y install python wget http://download.openpkg.org/components/cache/python-json/si
阅读全文
摘要:消息服务平台 处理公司内部各种消息业务 比如 发送邮件 发送短信 微信推送 接口有两种类型 异步 同步 同步需求: 当调用消息服务平台,需要返回消息服务平台调用第三方平台接口是否成功 异步需求: 采用MQ异步发送消息(没有返回结果) 我用world画了个示意图:大家看下 发送邮件参数: 邮件账号 内
阅读全文
摘要:发布订阅模式与前面的点对点模式很类似,简直一毛一样 注意:发布订阅模式 先启动消费者 公用pom: 与上一篇博客类似的:改改就欧克了 猜猜都知道该怎么玩 yml: config producer 创建producer maven SpringBoot 默认开启点对点的!!!! 订阅模式需要手动!!!
阅读全文
摘要:没有版本号,表示springboot已经整合好了 项目结构: yml: config: producer 启动类: 运行: 一直在增加 思路总结: queue 注入到springboot容器, 然后producer 去取出来 spring定时任务 5s定时写入消息 然后创建另外一个Consumer
阅读全文
摘要:用户注册成功后发短信提醒 同步http 异步mq JMS中两种通讯模式: 发布订阅 一对多 topic 去过消费者集群的话 都会消费 消息队列 点对点 queue 去过消费者集群的话 均摊消费 场景问题: 服务器断电重启,未被消费的消息是否会在重启之后消费? 两种模式: 1、非持久性,服务器断电(关
阅读全文
摘要:ActiveMQ消息签收机制: 客戶端成功接收一条消息的标志是一条消息被签收,成功应答。 消息的签收情形分两种: 1、带事务的session 如果session带有事务,并且事务成功提交,则消息被自动签收。如果事务回滚,则消息会被再次传送。 2、不带事务的session 不带事务的session的签
阅读全文
摘要:maven依赖 结果: 发布订阅模式!先启动订阅 在启动发布!!!!!! 结果: 如果启动一个生产者 两个消费者 那么消费者消费都到的是一样的!
阅读全文
摘要:依赖: 查看结果: 创建完了 producer 下面 comsumer: 生产者,消费者 代码相同
阅读全文
摘要:1、 下载:wget http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apache-activemq-5.9.0-bin.tar.gz 2、解压 tar -xf apache-activemq-5.9.0-bin.tar.g
阅读全文
摘要:2.1 什么是JMS? JMS是Java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。 2.2 什么是消息模型 ○ Point-to-Point(P2P) 点对点 ○ Publish/Subscribe(Pub/Sub) 发布订阅 即点对点和发布订阅模型 2.2.1 P2P (
阅读全文
摘要:1.1消息中间件产生的背景 在客户端与服务器进行通讯时.客户端调用后,必须等待服务对象完成处理返回结果才能继续执行。 客户与服务器对象的生命周期紧密耦合,客户进程和服务对象进程都都必须正常运行;如果由于服务对象崩溃或者网络故障导致用户的请求不可达,客户会受到异常 点对点通信: 客户的一次调用只发送给
阅读全文
摘要:底层已经实现好了 调度中心集群 调度中心支持集群部署,提升调度系统容灾和可用性。 调度中心集群部署时,几点要求和建议: DB配置保持一致; 登陆账号配置保持一致; 群机器时钟保持一致(单机集群忽视); 建议:推荐通过nginx为调度中心集群做负载均衡,分配域名。调度中心访问、执行器回调配置、调用AP
阅读全文
摘要:下载Tomcat 安装tomcat tomcat7是绿色软件,解压后即可使用,请大家先将tomcat解压到合适的位置(建议整个路径都是英文路径),下载 apache-tomcat-7.0.79-windows-x64 配置环境变量 配置jdk的环境变量(略)在系统变量里新建变量名:CATALINA_
阅读全文
摘要:下载: https://github.com/xuxueli/xxl-job 下载 然后倒入到自己的工程里面 引入后: 导入数据:跑一边 导入: 修改: Window -->show view-->other-->Servers 把admin引入 方法: 右键: 点击add and remove 即
阅读全文
摘要:定时任务场景: 数据同步,交易信息,定时发送数据,活动推送 主题:分布式任务调度平台分布式领域中集群的话,保证定时Job幂等性 Java定时job方案: Thread TimerTast 线程池 quartz SpringBoot 内置schedul 1、Thread: TimerTask 线程池:
阅读全文
摘要:分散读取与聚集写入 分散读取(scattering Reads):将通道中的数据分散到多个缓冲区中 聚集写入(gathering Writes):将多个缓冲区的数据聚集到通道中 分散读取 聚集写入
阅读全文
摘要:通道表示打开到 IO 设备(例如:文件、套接字)的连接。若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区。然后操作缓冲区,对数据进行处理。Channel 负责传输, Buffer 负责存储。通道是由 java.nio.channels 包定义的。 Channel
阅读全文
摘要:直接缓冲区与非直接缓冲区别 非直接缓冲区:通过 allocate() 方法分配缓冲区,将缓冲区建立在 JVM 的内存中 上图读的过程: 读物理磁盘文件时候,先到物理内存读到,然后拷贝到jvm内存中。 程序去jvm读取。 从物理空间拷贝到jvm内存空间,效率慢。 写的过程: 先写到jvm内存,jvm拷
阅读全文
摘要:1、slmgr.vbs /upk 2、slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX 3、slmgr /skms zh.us.to 4、slmgr /ato
阅读全文
摘要:位置(position):下一个要读取或写入的数据的索引。缓冲区的位置不能为负,并且不能大于其限制(limit)。 标记(mark)与重置(reset):标记是一个索引,通过Buffer中的mark()方法指定Buffer中一个特定的position,之后可以通过调用reset()方法恢复到这个po
阅读全文
摘要:缓冲区 存放要读取的数据 缓冲区 和 通道 配合使用 一个用于特定基本数据类行的容器。有java.nio包定义的,所有缓冲区都是抽象类Buffer的子类。 Java NIO中的Buffer主要用于与NIO通道进行交互,数据是从通道读入到缓冲区,从缓冲区写入通道中的。 Buffer就像一个数组,可以保
阅读全文
摘要:NIO概述 什么是NIO? Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符
阅读全文
摘要:为什么放弃Dubbo 使用SpringCloud? 相同点:SpringCloud 和Dubbo可以实现RPC远程调用框架,可以实现服务治理。 不同点: SpringCloud是一套目前比较网站微服务框架了,整合了分布式常用解决方案遇到了问题注册中心Eureka、负载均衡器Ribbon ,客户端调用
阅读全文
摘要:Dubbo支持协议 Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。 Spring Cloud 项目feign客户端 继承依赖方式实现重构项目 jar: 打成jar包 pom:依赖
阅读全文
摘要:消费者 去注册中心获取信息 然后缓存到本地 如果有生产者某个服务宕机了 会通过通知的方式告知 (订阅的方式) 微服务rpc远程调用框架中,服务的负载均衡都是采用本地负载均衡的,Spring Cloud 使用的ribbon(本地负载均衡) 如果使用Nginx,那么获取到服务信息后,请求要交给Nginx
阅读全文
摘要:DubboAdmin部署 将dubbo-admin.war放入到TomcatWebapps目录下,修改dubbo.properties中的Zookeeper连接地址即可。 dubbo-admin放到 tomcat webapp即可 dubbo:https://github.com/alibaba/d
阅读全文
摘要:在写 dubbbo调用时候 <dubbo:reference 不能有空格! 项目结构: pom: 业务: dubbo配置 启动: 只引入了接口 没有实现。 实现都是通过底层转换成rpc dubbo协议进行调用的
阅读全文
摘要:环境步骤: Dubbo注册中心采用的是Zookeeper。为什么采用Zookeeper呢? Zookeeper是一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心。 Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机
阅读全文
摘要:角色 Provider 提供服务 Consumer 调用服务 Register 服务注册于发现的 注册中心 Monitor 统计服务的调用次数和调用时间的监控中心 调用远程像调用本地一样 底层帮助做了序列化 和 反序列化 原理: 1、当生产者 启动时候 ,会将自己的服务信息注册到注册中心 2、将当前
阅读全文
摘要:什么是Dubbo 一款分布式服务框架 高性能和透明化的RPC远程服务调用方案 SOA服务治理方案 每天为2千多个服务提供大于30亿次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点以及别的公司的业务中。 Dubbo注册中心 对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型
阅读全文
摘要:动静分离,动态资源 jps servlet spring mvc 与静态资源 js html img css 不会部署到同一个服务器 前后端分离 网站架构模式 微服务开发基于SOA,面向于服务器开发,后台和前段采用接口方式。将一个项目拆分成一个控制web (前端) 和接口(后端) 。最终使用rpc远
阅读全文
摘要:Nginx做静态资源服务器优于Tomcat 区分静态资源,动态资源请求 使用域名区分! 如果是动态资源请求 反向代理到 Tomcat 如果 是静态资源请求 直接走本地Nginx 配置: ###静态资源 server { listen 80; server_name static.toov5.com;
阅读全文
摘要:动态页面与静态页面区别 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。 什么是动静分离 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源
阅读全文
摘要:lvs与Nginx区别 LVS的负载能力强,因为其工作方式逻辑非常简单,仅进行请求分发,而且工作在网络的第4层,没有流量,所以其效率不需要有过多的忧虑。 LVS基本能支持所有应用,因为工作在第4层,所以LVS可以对几乎所有应用进行负载均衡,包括Web、数据库等。 注意:LVS并不能完全判别节点故障,
阅读全文
摘要:下面配置多主多从: upstream testproxy { server 127.0.0.1:8080; server 127.0.0.1:8081; server 127.0.0.1:8082 backup; server 127.0.0.1:8082 backup; } server { li
阅读全文
摘要:项目中服务器如果发生宕机:1、故障转移 2、心跳检测 3、负载均衡 4、自动重启 心跳检测: 心跳检测脚本: 写入nginx_check.sh脚本 vi /etc/keepalived/nginx_check.sh #!/bin/bashA=`ps -C nginx –no-header |wc -
阅读全文
摘要:可以两台机子互为热备,平时各自负责各自的服务。在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续性,提高服务的可靠性,从而保证服务器7*24小时运行。 首先使用keepalived虚拟VIP 删除掉原来的 rm -
阅读全文
摘要:两台Linux 环境搭建 安装keepalived 1.下载keepalived wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz 2.解压安装: tar -zxvf keepalived-1.2.18.tar.gz -
阅读全文
摘要:1、右键管理 克隆 虚拟机中的当前状态 创建完整克隆 2、进入 cd /etc/udev/rules.d目录,可以看到有70-persistent-net.rules这么一个文件。 使用命令vim 70-persistent-net.rule 或者直接 vi /etc/udev/rules.d/70
阅读全文
摘要:项目发布时候,别人还能访问呢? 双机主从热备 LVS作用 LVS是一个开源的软件,可以实现传输层四层负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,w
阅读全文
摘要:nginx 支持TCP转发和负载均衡的支持 实现下面的架构: 看配置: 短小精悍! 连接 server1 断开 在连接到 server2 就这样的轮训~~~
阅读全文
摘要:Nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信。 stream模块默认不安装的,需要手动添加参数:–with-stream,官方下载地址:download,根据自己系统版本选择nginx1.9或以上版本 ./configure --add-modul
阅读全文
摘要:四层负载均衡与七层负载均衡区别 四层负载均衡,在网络模型中的传输层中,基于主要是基于tcp协议报文实现负载均衡(比如LVS、haproxy就是四层负载均衡器),使用改写报文的源地址和目的地址。 支持反向代理 LVS(软负载) F5(硬负载) Haproxy 支持所有负载均衡功能 比如数据库 web服
阅读全文
摘要:网络编程 Nginx1.9之前使用 Lvs Haproxy 实现四层反向和负载均衡 Lvs可以i应用到所有负载均衡的功能 数据库 web服务等 四层负载均衡,根据连接进行保存。 断开,连接。进行轮训。TCP四层负载均衡使用长连接方式,只要客户端与服务器端保持连接,Nginx不会轮训到下一台服务器。
阅读全文
摘要:首先 安装好 Consul upsync 然后: 1、配置安装Nginx 需要做配置,包括分组之类的,创建目录,有些插件是需要存放在这些目录的 groupadd nginx useradd -g nginx -s /sbin/nologin nginx mkdir -p /var/tmp/nginx
阅读全文
摘要:1、安装nginx-upsync-module wget https://github.com/weibocom/nginx-upsync-module/archive/master.zip 作用:nginx动态获取最新upstream信息 2、解压安装 unzip master.zip nginx
阅读全文
摘要:大家在玩的时候 一定要使用ningx 1.9以上版本啊! 下载:wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压: yum -y install unzip unzip consul_0.
阅读全文
摘要:Http动态负载均衡 什么是动态负载均衡 传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件, 因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf。 这类似分布式的配置中心 动态负载均
阅读全文
摘要:Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用。 Rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用P
阅读全文
摘要:当上游服务器(真实访问服务器),一旦出现故障或者是没有及时相应的话,应该直接轮训到下一台服务器,保证服务器的高可用。 如果上游服务器的某一台宕机了,直接轮训到下一个~ 8080 8081 8082 关掉8082 就不访问了啊哈~ 配置相关: server {listen 80;server_name
阅读全文
摘要:负载均衡算法 1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。 2、weight(轮询权值) weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合
阅读全文
摘要:负载均衡的作用 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用
阅读全文
摘要:location的作用 location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。 location的语法 已=开头表示精确匹配 如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。 ^~ 开头表示uri以某个常规字符串开
阅读全文
摘要:反向代理的作用 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 启动一个Tomcat 127.0.0.1
阅读全文
摘要:一 、Nginx虚拟主机配置( 基于不同的域名,跳转到不同的项目) 1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台 3、基于ip的虚拟主机,几乎不用。 基于虚拟主机配置域名 实现步骤: 需要建
阅读全文
摘要:Nginx Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力
阅读全文
摘要:DNS域名解析 整个过程大体描述如下,其中前两个步骤是在本机完成的,后8个步骤涉及到真正的域名解析服务器:1、浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几
阅读全文
摘要:普通的连接: pom: 代码: 运行查看结果: SpringBoot整合: 配置文件抽取到 yml中 整合: pom.xml
阅读全文
摘要:1、服务实集群是为了 保证整套系统的高可用 2、注册中心 管理每个服务的依赖关系 zk consul redis eureka 服务器集群和注册中心集群目的不一样 相同点: 为了高可用,某个服务宕机,故障转移 服务器集群 为了高并发 注册中心集群 如果是单台注册中心节点,宕机后可能导致整个微服务无法
阅读全文
摘要:master选举使用场景及结构 现在很多时候我们的服务需要7*24小时工作,假如一台机器挂了,我们希望能有其它机器顶替它继续工作。此类问题现在多采用master-salve模式,也就是常说的主从模式,正常情况下主机提供服务,备机负责监听主机状态,当主机异常时,可以自动切换到备机继续提供服务(这里有点
阅读全文
摘要:基于令牌(Token)方式实现Session解决方案,因为Session本身就是分布式共享连接 用token代替session 废话不多说,看项目: pom.xml yml redis token的封装 controller 运行访问 怎么刷新都能获取到哦 redis 在服务器集群的时候 分布式缓存
阅读全文
摘要:一、首先Session Session 是客户端与服务器通讯会话技术, 比如浏览器登陆、记录整个浏览会话信息。session存放在服务器,关闭浏览器不会失效。 Session实现原理 客户对向服务器端发送请求后,Session 创建在服务器端,返回Sessionid给客户端浏览器保存在本地,当下次发
阅读全文
摘要:./nginx -s reload 重启nginx killall -9 nginx 杀死nginx 退出Nginx 重启Nginx scp 本地到另外一台: scp -r /home/zookeeper/ root@192.168.91.4:/home/zookeeper/ vi: 1,10d 删
阅读全文
摘要:1.安装gcc gcc-c++(如新环境,未安装请先安装 yum install -y gcc gcc-c++ 2.安装wget yum -y install wget 3.安装PCRE库 cd /home/nginx wget http://jaist.dl.sourceforge.net/pro
阅读全文
摘要:1.分布式锁解决方案 1.采用数据库 不建议 性能不好 jdbc 2.基于Redis实现分布式锁(setnx)setnx也可以存入key,如果存入key成功返回1,如果存入的key已经存在了,返回0. 3.基于Zookeeper实现分布式锁 Zookeeper是一个分布式协调工具,在分布式解决方案中
阅读全文
摘要:1.添加 contentType:“application/json“之后,向后台发送数据的格式必须为json字符串 2.我们在项目开发时开发环境和运行环境的配置是不一样的,比如数据库本地测试,和运行环境数据库的地址是不同的。这时候可以通过spring.profiles.active来分区配置。 y
阅读全文
摘要:分布式锁 分布式锁,这个主要得益于 ZooKeeper 为我们保证了数据的强一致性。锁服务可以分为两类,一个是 保持独占,另一个是 控制时序。 1. 所谓保持独占,就是所有试图来获取这个锁的客户端,最终只有一个可以成功获得这把锁。通常的做法是把 zk 上的一个 znode 看作是一把锁,通过 cre
阅读全文
摘要:前面:https://www.cnblogs.com/toov5/p/9899238.html 服务发生宕机 咋办? 发个事件通知,告知大家哟, 会有通知事件哦 看项目: 服务端: 客户端 pom: 启动三个服务端,一个客户端。然后随机关闭一个服务端: 控制台: 当有新节点启动时候: 核心部分代码欣
阅读全文
摘要:先玩个正常的,好玩的socket编程: 服务端: 首先公共的这个Handler: 客户端: 运行结果: 引申思路 使用Zookeeper实现负载均衡原理,服务器端将启动的服务注册到,zk注册中心上,采用临时节点。客户端从zk节点上获取最新服务节点信息,本地使用负载均衡算法,随机分配服务器。 1、会员
阅读全文
摘要:可以通过图形化界面进行操作使用的工具是 zookeeper-dev-ZooInspector.jar 连接到我的zk之后: 1、Java操作zk 依赖: 代码: 结果: 注意如果创建父子关系,必须先创建父 在创建子 然后: 说明: String result = zk.create("/itmayi
阅读全文
摘要:三台 Linux虚拟机,每台都需要安装Jdk环境 1、上传Zookeeper安装包 (比较大 直接上传得了) 或者:wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10
阅读全文
摘要:Zookeeper是分布式协调工具 应用场景 命名服务(注册中心) Dubbo注册中心 分布式配置中心(SpringCloud config)动态管理配置文件信息 消息中间件 事件通知(类似发布订阅) 分布式事务(全局协调者) 实现分布式锁 实现选举策略(类似哨兵机制) 实现本地动态负载均衡 (Du
阅读全文
摘要:缓存穿透 缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空。这样请求就绕过缓存直接查数据库,这也是经常提的缓存命中率问题。 解决的办法就是:如果查询数据库也为空,直接设置一个默认值存放到缓存,这样第二次到缓
阅读全文
摘要:项目目录结构: pom: yml: service controller 启动 结果: Redis集群的几个注意事项 Redis集群使用CRC16对key进行hash,集群固定使用16384对hash出来的值取模。因为取模结果一定在16384之内,所以集群中的sharding(分片)实际就是如何将1
阅读全文
摘要:对于Redis主从复制,数据值每个服务器都存了。 客户端连接这个集群,不用在乎Master了 Redis好处: 1. 减轻db压力 2. RDB(间隔,非实时); AOF(日志形式记录,实时)如果在项目 断电(不会保存)和 停止redis redis停止时候会保存就rdb日志文件, rdb是独立进程
阅读全文
摘要:Redis事物 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。 一个事务从开始到
阅读全文
摘要:需要的maven依赖 jar包,是对Jedis的封装 maven依赖: 项目的目录结构: yml: redis中代码的封装: controller 启动类 运行结果: redis: 到期了后 就没了哦 过期了
阅读全文
摘要:Redis目前支持5种数据类型 String(字符串) List(列表) Hash(字典) Set(集合) Sorted Set(有序集合) 一一列举 1. String 描述: String是简单的 key-value 键值对,value 不仅可以是 String,也可以是数字。String在re
阅读全文
摘要:# 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 service iptables start # 重启防火墙 service iptables restart # 永久关闭防火墙 chkconfig ip
阅读全文