master

微服务架构——分布式锁探索

随声附和 提交于 2019-12-04 01:26:27
本问主要针对zookpeer、redis实现分布式锁进行探讨, 文中有什么不严谨之处,欢迎批评指正。 redis方面:有开源redisson的jar包供你使用。 zookpeer方面:有开源的curator的jar包供你使用 需要说明的是,Google有一个名为Chubby的粗粒度分布锁的服务,然而,Google Chubby并不是开源的,我们只能通过其论文和其他相关的文档中了解具体的细节。值得庆幸的是,Yahoo!借鉴Chubby的设计思想开发了Zookeeper,并将其开源,因此本文不讨论Chubby。至于Tair,是阿里开源的一个分布式K-V存储方案。我们在工作中基本上redis使用的比较多,讨论Tair所实现的分布式锁,不具有代表性。 因此,主要分析的还是redis和zookpper所实现的分布式锁。 1、使用分布式锁的目的: 无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作。通俗的讲,即:一个方法在高并发情况下的同一时间只能被同一个线程执行! 使用分布式锁的原因: (1)提升效率 采取锁定可以避免不必要地执行相同的工作两次(例如,一些昂贵的计算)。如果锁定失败并且两个节点最终完成相同的工作,结果是成本略有增加(最终为云服务支付的费用比您原本要多5美分)或稍有不便(例如用户最终)两次收到相同的电子邮件通知)。 (2)提升正确性

mysql 主从复制刷新参数

依然范特西╮ 提交于 2019-12-04 01:11:10
mysql 复制的sync参数: master_info_repository = TABLE relay_log_info_repository = TABLE sync_master_info =1000 sync_relay_log =1000 sync_relay_log_info =1000 MySQL主从复制想必大家都会配置,但是每一层都完全理解可能不一定多。在mysql 从库保存有两个信息,分别:master_info_repository=( TABLE or File ) relay_log_info_repository = (TABLE or FILE) 在最开始的主从复制的时候,这两个参数分别是等于 FILE, maiter.info 文件保存: master_host,Master_log_name,master_log_pos, relay.info 文件保存着: Relay_log_name,relay_log_pos,Master_log_name,Master_log_pos 在5.6开始,master.info 和relay.info 支持存放到数据表中 对应 slave_master_info,slave_relay_log_info sync_master_info 参数 是控制 slave_master_info 表的更新频

git lost master branch

旧街凉风 提交于 2019-12-03 22:32:54
问题 Hi i have a private repository here. https://github.com/Nuvelle/The-Last-Knights. i dont know what happened i was working last night and suddenly my master is showing only initial commit , committed 12 hours ago. there is no history and nothing.i ave been trying since morning to figure it out. any help is appreciated 回答1: A possible explanation is a git push --force of a reset master branch. While the local reflog might show only one commit, you might find trace of the old remote master

git基本操作

杀马特。学长 韩版系。学妹 提交于 2019-12-03 21:19:35
git基本文章,随手一记 【命令】 $ git init  ---初始化(在当前目录下创建.git目录,同时当前目录成为一个Git仓库) $ git status  ---查看当前状态 / 查看有何改动 $ git add .  ---添加需要追踪的新文件和待提交的更改 $ git commit -m '提交的备注(reMark)'  ---将暂存区里的改动给提交到本地的版本库 $ git pull origin master(分支名称)  ---拉取分支下的代码到当前分支并合并 $ git push origin master  ---将本地的master分支推送到origin主机 $ git remote show origin  ---查看当前仓库地址 $ git remote add origin Git地址  ---为当前文件夹添加远程仓库 $ git remote set-url origin Git地址  ---设置新的仓库地址 【冲突】 一般是在从远程主机拉取下来代码与本地代码(执行pull操作)合并时会产生冲突,表现: 《《《《《《 head ============== =|=|=|=|=|=|=|=|=   解决: git pull origin master执行后, 查看状态 git status ,红色的为冲突文件, 把文件修改完后,重新进行git add

Swoole Redis 连接池的实现

江枫思渺然 提交于 2019-12-03 21:11:05
这篇文章仅仅只实现一个 Redis 连接池,篇幅就太少了,顺便将前几篇整合一下。 Demo 中大概包含这些点: 实现 MySQL 连接池 实现 MySQL CURD 方法的定义 实现 Redis 连接池 实现 Redis 方法的定义 满足 HTTP、TCP、WebSocket 调用 提供 Demo 供测试 调整 目录结构 HTTP 调用: 实现 读取 MySQL 中数据的 Demo 实现 读取 Redis 中数据的 Demo 640?wx_fmt=png TCP 调用: 实现 读取 MySQL 中数据的 Demo 实现 读取 Redis 中数据的 Demo 640?wx_fmt=png WebSocket 调用: 实现 每秒展示 API 调用量 Demo 640?wx_fmt=gif 目录结构 ├─ client │ ├─ http │ ├── mysql.php //测试 MySQL 连接 │ ├── redis.php //测试 Redis 连接 │ ├─ tcp │ ├── mysql.php //测试 MySQL 连接 │ ├── redis.php //测试 Redis 连接 │ ├─ websocket │ ├── index.html //实现 API 调用量展示 ├─ controller │ ├─ Order.php //实现 MySQL CURD │ ├─

django+centos+mariadb读写分离完美实现(上)-mysql主从备份实现

白昼怎懂夜的黑 提交于 2019-12-03 21:07:58
首先画图一张,用来展示今天要做的事情,读写分离,个人理解就是使用mysql主从备份的原理,让两个数据库同时为自己提供服务。其中主库负责数据保存,从库负责数据展示,可以一主一从,也可以一主多从。从而降低数据库同时处理读写的压力。 1、环境如下 master 10.10.101.83 slave 10.10.101.184 2、接着搭建数据库备份,使用的是centos7.4+mariadb   2-1-两台服务器安装Mariadb数据库   (ps:mariadb是免费版的mysql,操作很相似,注意,两台服务器都安装)   yum install mariadb mariadb-server -y 2-2-两台服务器启动mariadb服务 systemctl start mariadb    mariadb默认处于一种类似调试模式的模式当中,不用密码也可以登录,所以现在两台服务器的mariadb要使用工作模式 mysql_secure_installation    master端操作   进行授权 grant replication slave on *.* to "root"@"%" identified by "123" with grant option;       刷新授权表 flush privileges;       创建要备份的数据库和表    导出数据库

github账户初始化设置

放肆的年华 提交于 2019-12-03 17:09:14
1.首先在github官网 https://github.com/ 上注册自己的账户; 2.去git官网 https://git-scm.com/downloads ,根据电脑系统下载合适的版本并安装。 3.安装完成后,右键打开git bash,输入如下命令: ssh-keygen -t rsa -C "747065543@qq.com" 配置github的ssh密钥,邮箱换成自己的 cat ~/.ssh/id_rsa.pub 打开.ssh文件里面,的id_rsa.pub文件,复制 4.登录github账号,在设置里面找到SSK and GPG keys,title标注公钥所在设备;例如公司,家; 配置用户名和邮箱(全局的,如果绑定多个账户,最好不要使用global) git config --global user.name "xiaowu0371" git config --global user.email "747065543@qq.com" 找到要上传的文件夹 git init 初始化.git文件 git remote add origin git@github.com:您的账户/您的厂库名称.git 关联远程厂库 git pull --rebase origin master 先把两边同步下(个人的首次上传需要做的,团队合作每次都要) git pull origin

Ingress-nginx 部署使用

泪湿孤枕 提交于 2019-12-03 17:04:03
Ingress-nginx 部署使用 一、Ingress 简介 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务,在Kubernetes 目前 提供了以下几种方案: NodePort LoadBalancer Ingress Ingress 组成 ingress controller   将新加入的Ingress转化成Nginx的配置文件并使之生效 ingress服务   将Nginx的配置抽象成一个Ingress对象,每添加一个新的服务只需写一个新的Ingress的yaml文件即可 Ingress 工作原理 1.ingress controller通过和kubernetes api交互,动态的去感知集群中ingress规则变化, 2.然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置, 3.再写到nginx-ingress-control的pod里,这个Ingress controller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中, 4.然后reload一下使配置生效。以此达到域名分配置和动态更新的问题。 Ingress 可以解决什么问题 1.动态配置服务   如果按照传统方式,

git rebase 版本。。变基

北城以北 提交于 2019-12-03 16:55:19
git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态。要搞清楚这个东西,要先看看版本库状态切换的两种情况: 我们知道,在某个分支上,我们可以通过git reset,实现将当前分支切换到本分支以前的任何一个版本状态,即所谓的“回溯”。即实现了本分支的“后悔药”。也即版本控制系统的初衷。 还有另一种情况,当我们的项目有多个分支的时候。我们除了在本地开发的时候可能会“回溯”外,也常常会将和自己并行开发的别人的分支修改添加到自 己本地来。这种情况下很常见。作为项目管理员,肯定会不断的合并各个子项目的补丁,并将最新版本推送到公共版本库,而作为开发人员之一,提交自己的补丁之 后,往往需要将自己的工作更新到最新的版本库,也就是说把别的分支的工作包含进来。 举个例子来说吧!假设我们的项目初期只有一个master分支,然后分支上作过两次提交。这个时候系统只有一个master分支,他的分支历史如下: master0(初始化后的版本) || v master1(第一次提交后的版本) || v master2(第二次提交后的版本) 这个时候,我们可以通过git reset将master分支(工作目录、工作缓存或者是版本库)切换到master1或者master0版本,这就是前面所说的第一种情况。 假设我们这里把master分支通过git

Git初始化本地已有项目

∥☆過路亽.° 提交于 2019-12-03 16:52:44
1.初始化仓库 git init 2.remote git remote add origin 仓库地址 3.从远程分支拉取master分支并与本地master分支合并 git pull origin master:master 4.提交本地分支到远程分支 git push -u origin master 5.将现有项目添加并提交上传 git add -A git commit -m '' git push --set-upstream origin master 来源: https://www.cnblogs.com/meetqy/p/11803390.html