高可用

【03】dubbo学习

a 夏天 提交于 2019-12-03 14:01:16
B站视频地址: https://www.bilibili.com/video/av61409284 1.模拟服务提供者 springcloud01-service-provider/ProviderApplication HelloController 请求方式: http://localhost:8081/service/hello 2.模拟服务消费者(直接调用服务提供者) springcloud02-service-consumer/ConsumerApplication WebController 3.搭建服务注册中心Eureka 1.添加pom依赖 2.使Eureka服务成为注册中心 3.配置Eureka服务配置中心 4.启动服务注册中心 5.向服务注册中心 注册 服务提供者(服务提供者/消费者 --- 都是服务客户端 1.添加(Eureka客户端)依赖 2.使服务提供者成为 Eureka客户端 3.配置服务名称和服务地址(在注册中心的地址) 4.启动服务提供者 5.刷新服务注册中心地址 6.服务消费者发现服务提供者 1.添加pom依赖 2.使消费者服务成为Eureka客户端 3.配置服务名和服务地址 7.验证: 通过服务注册中心方式开发 ============================================================ 8

【02】Spring Cloud 学习

人走茶凉 提交于 2019-12-03 13:58:35
Spring官网: https://spring.io B站视频地址: https://www.bilibili.com/video/av61409284 1.模拟服务提供者 springcloud01-service-provider/ProviderApplication HelloController 请求方式: http://localhost:8081/service/hello 2.模拟服务消费者(直接调用服务提供者) springcloud02-service-consumer/ConsumerApplication WebController 3.搭建服务注册中心Eureka 1.添加pom依赖 2.使Eureka服务成为注册中心 3.配置Eureka服务配置中心 4.启动服务注册中心 5.向服务注册中心 注册 服务提供者(服务提供者/消费者 --- 都是服务客户端 1.添加(Eureka客户端)依赖 2.使服务提供者成为 Eureka客户端 3.配置服务名称和服务地址(在注册中心的地址) 4.启动服务提供者 5.刷新服务注册中心地址 6.服务消费者发现服务提供者 1.添加pom依赖 2.使消费者服务成为Eureka客户端 3.配置服务名和服务地址 7.验证: 通过服务注册中心方式开发 ========================================

消息队列的一些知识

天涯浪子 提交于 2019-12-03 13:02:01
这里总结一些MQ(Message Queue,消息队列)的相关知识。 消息队列的优点 解耦 在传统模式下,系统之间的耦合性太强,比如系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码。 如果将消息写入消息队列,需要消息的系统自己从消息队列中订阅,在D系统接入的时候系统A也不需要做任何修改,达到了解耦的效果。 异步 在传统模式下,一些非必要的业务逻辑以同步的方式运行,需要等待上一个业务逻辑执行完毕才能开始执行下一个业务逻辑,耗费等待的时间。 如果将消息写入消息队列,非必要的业务逻辑就可以以异步的方式运行,加快了服务响应的速度。 削峰 在传统模式下,当并发量大的时候,所有的请求都会直接怼到数据库,造成数据库连接异常,甚至宕机。 如果将消息写入消息队列,则系统A可以慢慢地按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期积压是允许的。 消息队列的缺点 我们引入一个技术,要对这个技术的弊端有充分的认识,才能做好预防。一个使用了MQ的项目,如果连MQ的缺点都没有考虑过,就把MQ引进去了,那就会给自己的项目带来风险。 系统可用性降低 你想啊,本来其他系统只要运行好好的,那你的系统就是正常的。现在你非要加个消息队列进去,那消息队列挂了,系统也就挂了。用专业的术语来解释,就是系统的可用性降低了。 系统复杂性增加

Mysql双主加Keepalived

点点圈 提交于 2019-12-03 10:52:26
一、 MySQL于keepalived简介* * 前言: 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动。因此,如果是双主或者多主,就会增加mysql入口,增加高可用。不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题。 1.1、 MySQL* * 1.1.1、MySQL主从复制原理 复制分成三步: \1. master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); \2. slave将master的binary log events拷贝到它的中继日志(relay log); \3. slave重做中继日志中的事件,将改变反映它自己的数据。 下图描述了这一过程: 1.1.2、MySQL双主构建思路 1.两台mysql都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用; 2.masterA是masterB的主库,masterB又是masterA的主库,它们互为主从; 3.两台主库之间做高可用,可以采用keepalived等方案(使用VIP对外提供服务); 4

基于 MHA 的MySQL高可用-CentOS7(理论)

▼魔方 西西 提交于 2019-12-03 10:30:42
MHA 简介 MHA(Master High Availability) 目前在 MySQL 高可用方面是一个相对成熟的解决方案, 它由日本 DeNA 公司的 youshimaton 员工(现就职于 Facebook 公司)开发,是一套优秀的作 为 MySQL 高可用性环境下 故障切换和主从角色提升 的高可用软件。在 MySQL 故障切换过程 中,MHA 能做到在 0~30 秒之内自动完成数据库的主从故障切换操作,并且在进行故障切换 的过程中,MHA 能在最大程度上保证数据的一致性,以达到真正意义上的高可用。 MHA 由两部分组成:MHA Manager(管理节点)和 MHA Node(数据节点) 。MHA Manager 可以单独部署在一台独立的机器上管理多个 master-slave 集群,也可以部署在一台 slave 节 点上。MHA Node 运行在每台 MySQL 服务器及 Manager 服务器上,MHA Manager 会定时探 测集群中的 master 节点,当 master 出现故障时,它可以自动将拥有最新数据的 slave 提升 为新的 master,然后将所有其他的 slave 重新指向新提升的 master。整个故障转移过程对应 用程序层面完全透明。 在 MHA 自动故障切换过程中,MHA 会试图从宕机的主服务器上保存二进制日志,最大 程度的保证数据不丢失

【转】分布式之消息队列复习精讲

眉间皱痕 提交于 2019-12-03 09:36:13
转自: https://www.cnblogs.com/rjzheng/p/8994962.html 引言 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑。再不然就是和运营聊聊天,写几个SQL,生成下报表。又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线。每天过的都是这种生活,技术零成长。 小B,工作于某国企,虽然能接触到一些中间件技术。然而,他只会订阅/发布消息。通俗点说,就是调调API。对为什么使用这些中间件啊?如何保证高可用啊?没有充分的认识。 庆幸的是两位朋友都很有上进心,于是博主写这篇文章,帮助他们复习一下关于消息队列中间件这块的要点 复习要点 本文大概围绕如下几点进行阐述: 为什么使用消息队列? 使用消息队列有什么缺点? 消息队列如何选型? 如何保证消息队列是高可用的? 如何保证消息不被重复消费? 如何保证消费的可靠性传输? 如何保证消息的顺序性? 我们围绕以上七点进行阐述。需要说明一下,本文不是《消息队列从入门到精通》这种课程,因此只是提供一个复习思路,而不是去教你们怎么调用消息队列的API。建议对消息队列不了解的人,去找点消息队列的博客看看,再看本文,收获更大 正文 1、为什么要使用消息队列? 分析 :一个用消息队列的人,不知道为啥用,这就有点尴尬

函数计算进行自动化运维专题

筅森魡賤 提交于 2019-12-03 08:55:44
前言 通常来说,自动化运维有两种类型的运维方式: 定时的脚本任务, 比如定时更换云服务的 acess key secret , 定时检查 ecs 对外暴露的端口等 报警事件的紧急处理, 比如 ecs 实例发生异常重启 在传统的运维中,对于定时任务的处理通常用crontab脚本来实现,但是一旦管理的机器多了,必定会对脚本进行集中管理,这个时候对集中管理脚本的机器的可用性、脚本里面会散落密码明文等相关信息以及定时任务执行的记录都是一个很大的挑战;而对于事件驱动的报警处理,要么是通过短信报警告知运维人员,要么需要自建服务来处理报警信息, 无论是哪种方式,财务成本和运维成本都很大。本文探讨一种新的运维方式,利用函数计算做自动化运维,以极低的成本就可以获得一个高可靠,高质量的运维服务。 函数计算 阿里云 函数计算 是一个事件驱动的serverless计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,具体表现为: 无需采购和管理服务器等基础设施 按需付费,比如对运维管控这类低频调用的系统,财务成本通常能节约90%以上 专注业务逻辑的开发,能极大提高开发效率,比如 十分钟上线弹性高可用的图片处理服务 稳定高可用,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力 提供日志查询、性能监控、报警等功能快速排查故障

函数计算进行自动化运维专题

烈酒焚心 提交于 2019-12-03 08:55:40
前言 通常来说,自动化运维有两种类型的运维方式: 定时的脚本任务, 比如定时更换云服务的 acess key secret , 定时检查 ecs 对外暴露的端口等 报警事件的紧急处理, 比如 ecs 实例发生异常重启 在传统的运维中,对于定时任务的处理通常用crontab脚本来实现,但是一旦管理的机器多了,必定会对脚本进行集中管理,这个时候对集中管理脚本的机器的可用性、脚本里面会散落密码明文等相关信息以及定时任务执行的记录都是一个很大的挑战;而对于事件驱动的报警处理,要么是通过短信报警告知运维人员,要么需要自建服务来处理报警信息, 无论是哪种方式,财务成本和运维成本都很大。本文探讨一种新的运维方式,利用函数计算做自动化运维,以极低的成本就可以获得一个高可靠,高质量的运维服务。 函数计算 阿里云 函数计算 是一个事件驱动的serverless计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,具体表现为: 无需采购和管理服务器等基础设施 按需付费,比如对运维管控这类低频调用的系统,财务成本通常能节约90%以上 专注业务逻辑的开发,能极大提高开发效率,比如 十分钟上线弹性高可用的图片处理服务 稳定高可用,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力 提供日志查询、性能监控、报警等功能快速排查故障

MySQL + KeepaLived 高可用

拜拜、爱过 提交于 2019-12-03 05:03:44
MySQL + KeepaLived 高可用 1. 基础环境 两台服务器,MySQL互为主从 MASTER 的 IP:10.0.0.11 BACKUP 的 IP:10.0.0.12 2.MASTER 实操 yum -y install keepalived cd /etc/keepalivedcp keepalived.conf keepalived.conf.bakvim keepalived.conf vrrp_instance VI_1 { state MASTER # 主机的初始身份:MASTER/BACKUP interface eth0 # VIP绑定网卡设备 virtual_router_id 51 # 路由广播ID,同步ID可以接受广播 priority 100 # 优先级,越大优先级越高,主的初始优先级必须要大于备份的主机 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.90 # VIP地址 }}virtual_server 10.0.0.90 3306 { # 虚拟服务器,IP地址是VIP,端口是对应服务的端口 delay_loop 6 nat_mask 255.255.255.0 protocol TCP​ real_server

分布式应用

北城以北 提交于 2019-12-03 04:53:08
基于SOA的分布式高可用架构和微服务架构,是时下如日中天的互联网企业级系统开发架构选择方案。在核心思想上,两者都主张对系统的横向细分和扩展,按不同的业务功能模块来对系统进行分割并且使用一定的手段实现服务之间的通信,并且基于弹性云服务搭建高可用的分布式解决方案。 但它们之间的区别可能比相似的地方要多,特别是体现在对服务的使用和与云服务的深度结合上。在具体实践中,微服务的架构也可以与其它互联网中间件组合在一起,组成规模更为庞大的SOA分布式系统。本文主要对一个典型的SOA分布式应用的架构和组件做详细的说明。 企业级系统架构的演变 单体式 单体架构即所有系统功能和模块基于MVC的设计模式耦合在一个单体服务器单元中。基于传统的MVC思想,单体应用基于前后端分离的原则,通过Model、Control和View共同来完成一个特点的服务请求。这种传统的架构模式带了了多人团队合作、代码更新和维护、持续部署方面的困难,更重要的是,这种架构无法支持互联网行业对高并发的需求。下图为一个典型商城应用的单体架构及其SSM实现架构: 关于单体式应用的更多资料,可参看: JavaWeb开发之详解Servlet及Servlet容器 基于SSM的Java Web应用开发原理初探 集群 至少在高并发的需求上,单体应用的缺陷是行业所无法忍受的, 那如何提升并发性能呢?一个直接的思路是,把单体应用变成多体,变成集群