elixir 高可用系列(二) GenServer】的更多相关文章

1. elixir 高可用系列(一) Agent 2. elixir 高可用系列(二) GenServer 3. elixir 高可用系列(三) GenEvent 4. elixir 高可用系列(四) Task 5. elixir 高可用系列(五) Supervisor…
概述 OTP 平台的容错性高,是因为它提供了机制来监控所有 processes 的状态,如果有进程出现异常, 不仅可以及时检测到错误,还可以对 processes 进行重启等操作. 有了 supervisor,可以有效的提高系统的可用性,一个 supervior 监督一个或多个应用, 同时, supervior 也可以监督 supervior,从而形成一个监督树,提高整个系统的可用性. 注意 ,supervior 最好只用于监督,不要有其他的业务逻辑处理,越是接近监督树根部的 supervior…
概述 如果我们需要管理多个进程,那么,就需要一个专门的 server 来集中监控和控制这些进程的状态,启停等. OTP 平台中的 GenServer 就是对这个 server 通用部分的抽象. 利用 GenServer 中已经提供的通用操作, 可以很方便的开发出可靠,健壮的程序. 下面首先通过一个示例演示 GenServer 的方便和强大之处,然后再对其进行介绍. GenServer 示例 这是一个 GenServer 管理多个进程的示例,模拟控制各个进程的启动,停止,以及状态查询. defmo…
概述 之前学习的 Agent,GenSever以及GenEvent,都是用来管理状态或者处理消息的. 但是在很多时候,我们需要的是执行某个任务,这时如果使用 GenSever 或者 GenEvent,就会显得比较笨重. 这时,我们就可以使用 Task 模块,使用 Task 模块时注意以下几点: 每个 task 只执行一个特定的功能,要让 task 处理的业务尽量简单(如果业务复杂的话,考虑使用 GenSever 或者 GenEvent) task 之间尽量不要交互,也尽量不要和其他 proces…
概述 GenEvent 是事件处理的通用部分的抽象. 通过 GenEvent ,我们给已有的服务 动态 的添加 事件处理. GenEevent 和 GenServer 的区别 之前已经介绍了 GenServer ,GenServer 和 GenEvent 的主要区别在于: GenServer 是服务器的抽象,除了封装处理 同步/异步 事件的方法之外,还封装了服务器本身的启动/停止等方法. GenEvent 是事件的抽象,封装了 同步/异步 事件的处理方法,GenEvent 可以绑定到任何服务器上…
概述 elixir 本身是一种 immutable 的语言,默认情况下,进程间是不共享任何状态的,进程之间通过消息来交互. 而 Agent 则封装了一种进程间共享状态的方式,通过这种方式,不用显式的写 send/receieve 的代码,就能方便的在进程之间共享状态. 使用方法 不用 Agent 来管理状态 首先,看一个在不用 Agent 的情况下,如何获取进程状态的例子. defmodule WithoutAgent do def start do Map.new() end def get(…
一.參数说明 MHA提供了一系列配置參数.深入理解每一个參数的详细含义,对优化配置.合理使用MHA非常重要.非常多高可用性也都是通过合理配置一些參数而实现的. MHA包含例如以下配置參数,分别说明例如以下: hostname/ip/port (Local Only) hostname为MySQL Server的IP地址或主机名: ip为MySQL Server的IP地址.缺省从$hostname中获取:port为MySQL Server的端口号,缺省为3306 ssh_host/ssh_ip/s…
一.基于GTID的异步复制(一主一从)无数据/少数据搭建 二.基于GTID的无损半同步复制(一主一从)(mysql5.7)基于大数据量的初始化 正文: [0]概念 [0.5]GTID 复制(mysql 在 5.6.2 及之后开始支持GTID): [2.5.1]GTID(Global Transaction Identifiers)概念: 对于一个已提交事务的编号,事务的唯一编号,并且是一个全局唯一的编号.GTID和事务会记录到binlog中,用来标识事务. GTID是用来替代以前,传统复制方法(…
Mycat高可用解决方案二(主从复制) 系统部署规划 名称 IP 主机名称 用户名/密码 配置 mysql主节点 192.168.199.110 mysql-01 root/hadoop 2核/2G mysql从节点 192.168.199.111 mysql-02 root/hadoop 2核/2G 主机角色 Hosts文件配置 /etc/hosts hostname配置 /etc/sysconfig/network 防火墙 Master主 192.168.199.110 127.0.0.1…
上一节我们有了两个分片的pxc集群,这一节我们接着安装haproxy和keepalived的实现集群的高可用 一.先下载haproxy的镜像 [root@localhost ~]# docker pull haproxy 二.在host主机上写好配置文件,启动容器时候读取haproxy.cfg,vim /usr/local/docker/haproxy/haproxy.cfg global #工作目录 chroot /usr/local/etc/haproxy #日志文件,使用rsyslog服务…
一 简介:介绍下高可用通用的方案 二 目的:一个中间件提供服务,故障后,另一个中间件提供服务 三 手段: 应用keepalived的vrrp_scripts服务 四 具体配置 global_defs { notification_email { root@localhost } script_user root //这里一定要写} vrrp_script chk_nginx { script "/etc/keepalived/check.sh" interval 1}vrrp_inst…
一 简介:建立读写分离模式 二 keepalived相关配置 vrrp_instance VI_1 {  state MASTER  // 可修改  interface eth0  virtual_router_id //两边必须一样  priority 100     //主比从高  advert_int 1  authentication {  auth_type PASS  auth_pass 123456  }  virtual_ipaddress {  VIP/24  }  } vir…
简介:今天咱们来聊聊keepalived一 keepalived 架构 1  标准架构: keepalived+lvs/haproxy+后端 real server(mysql从库,nginx.mycat) 实现静态的高可用和负载均衡     1 特点 : 1 keepalived在独立的服务器上,为后端多组集群提供高可用服务 2 配置文件 包含后端真实IP和端口检测    2 检测后端服务脚本:        1 手段 1 TCP 2 HTTP 3 MISC_CHECK(自定义脚本)     …
关于Atlas的详细介绍请访问:https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md 为什么要使用Atlas?应用程序直连数据库不好吗?还要在前面加上一层代理,会不会降低应用的读写性能?会不会增加维护管理的成本?我想这是每个使用atlas之前的疑问. 1.为什么要使用Atlas? 我们使用atlas,主要使用它的读写分离和从库负载均衡功能.因为咱们这读业务远远多于写,故采用读写分离的架构再合适不过了.之前实现读写分离,一般都是通过应…
1.1Keepalived高可用软件 Keepalived起初是专为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入了VRRP的功能,因此除了配合LVS服务外,也可以作为其他服务(Nginx,Haproxy)的高可用软件,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由出现的单点故障问题,它能够保证网络的不间断.稳定的运行.所以,keepalived以方面具有LVS Clus…
ProxySQL安装 yum/rpm安装 在github或官网上可以下载rpm包,wiki的Getting start章节有详细介绍. cat <<EOF | tee /etc/yum.repos.d/proxysql.repo [proxysql_repo] name= ProxySQL YUM repository baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/7 gpgcheck=1 gpgkey=http…
关键词:MHA,mysql mha [1]需求 采用mysql技术,实现MHA高可用主从环境,预计未来数据量几百G MHA概念参考:MYSQL高可用技术概述 [2]环境技术架构 [2.1]MHA简介 该软件由两部分组成: MHA Manager(管理节点) MHA Node(数据节点) MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上. MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的…
关键词:mysql高可用概述,mysql高可用架构 常用高可用方案 20190918 现在业内常用的MySQL高可用方案有哪些?目前来说,用的比较多的开源方案分内置高可用与外部实现,内置高可用有如下:1.官方版本分支:MGR(首推)2.percona分支:PXC3.MariaDB:Galera Cluster 外部实现方案:1.orchestrator(GTID)2.replication-manager(GTID)3.MHA(传统复制)4.MOHA(支持多AZ部署)5.其他... [1]Mys…
从上篇文章我们知道主备同步是依赖于 binlog,主库负责生产 binlog,备库负责消费 binlog,从而实现主备同步. 今天我们来学习一下主备同步里的一个重点的问题:主备延时. 主备延时,简单来说,就是主库和备库的数据一致出现一定的时间差,比如备库的此刻的数据快照是主备5分钟前的数据快照,那就说明主备延时有5分钟. 主备延迟是怎么产生的 产生主备延迟的根本原因是备库上消费 binlog 的速度赶不上主库产生 binlog 的速度.比如: 大事务,例如一次性delete很多数据: 大表的DD…
转自:https://blog.csdn.net/wmq880204/article/details/53160078 一.GTID的概述: 1.全局事物标识:global transaction identifieds. 2.GTID事物是全局唯一性的,且一个事务对应一个GTID. 3.一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致. 4.GTID用来代替classic的复制方法,不在使用binlog+pos开启复制.而是使用master_auto_postion…
参考:https://www.iteye.com/blog/shift-alt-ctrl-2269539 详情 [1]参数 #[1.1]基本参数 bind-address=192.168.1.201 server_id=2013306   #主从不相同,建议IP+端口 #skip_name_resolve=off #跳过主机名/域名解析 transaction-isolation=read-committed #事务隔离级别设置成RC #[1.2]binlog二进制日志参数 log_bin=/m…
关键词:mysql主从复制,mysql复制,MGR,mysql并行复制 目录 [1]mysql支持的复制类型 [2]mysql的主从4种同步方式介绍 (1)异步 (2)同步 (3)5.6 半同步 (4)5.7增强半同步 [3]MGR的介绍 [4]mysql并行复制 [4.1]并行复制的当前大三模式 [库间并发][组提交][WriteSet] 正文 [1]mysql支持的复制类型 基于binlog的3种模式(详情参考:binlog的3种日志记录模式),oracle在mysql5.5版本收购 [1.…
1.Redis字符串结构 对于Redis来说,所有的key都是字符串,其value可以是string,list,hash,set,zset 比如下面的 键值对的value还可以更加复杂,比如可以是json格式,xml格式,序列化等 字符串类型的value的长度不能大于512MB. 在实际生产中,如果一个值保存成500MB的话,获取这个值的时候会占用很多的网络流量,其次读取的时候也会非常慢,这对于Redis这种单线程应用来说并不明智 在生产环境中,考虑到并发和网络流量的因素,value的大小建议在…
一.缓存的收益与成本 1.收益 2.成本 二.使用场景 三.缓存的更新策略 四.缓存颗粒度控制 五.缓存穿透 六.无底洞问题 七.热点key的重建优化  …
一.呼唤集群 二.数据分布概论      三.哈希分布 1.节点取余 2.一致性哈希 添加一个node5节点时,只影响n1和n2之间的数据   3.虚拟槽分区 四.基本架构 五.redis cluster 架构 六.Redis Cluster安装配置 1.原生命令安装 2.官方工具安装…
关键词:mysql复制故障处理 [1]手工处理的gtid_next(SQL线程报错) 例如:主键冲突,表.数据库不存在,row模式下的数据不存在等. [1.1]模拟故障:GTID模式下的重复创建用户 ]先在从库上创建一个用户,再去主库上创建一个用户-- 从202: create user 'test'@'%' identified by '123456';grant all privileges on *.* to 'test'@'%';flush privileges; -- 主202: cr…
关键词:percona-toolkit 工具包中包含 pt-table-checksum工具,在线验证主从一致性 [1]percona-toolkit 工具包 [1.1]percona-toolkit下载 下载地址: https://www.percona.com/downloads/percona-toolkit/LATEST/ linux下载/windows直接点击下载 percona-toolkit-3.1.0_x86_64.tar.gz https://www.percona.com/d…
转载请注明原创出处,谢谢! 什么是线程? 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 线程状态转换 新建状态(New):新创建了一个线程对象. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用…
1. 三种启动方式 ♦️  最简启动 ./redis-server 使用Redis默认配置进行启动; ♦️  动态参数启动 * redis-server --port 6380  更改端口为6380并启动 ♦️  配置文件启动 redis-server  configPath (将需要的配置写在配置文件中) 三种方式对比:    生产环境选择配置文件启动    单机多实例配置文件可以用端口区分开 2. Redis客户端连接 ./redis-cli  -h 127.0.0.1 -p 6379 Re…
实现 MHA VIP 功能 配置 master_ip_failover 脚本(db3) 把 master_ip_failover 上传到 /iba/software 上 master_ip_failover 文件内容 #!/usr/bin/env perl use strict; use warnings FATAL => 'all'; use Getopt::Long; my ( $command, $ssh_user, $orig_master_host, $orig_master_ip,…