ABP 框架 数据库底层迁移 Mysql 集群

技术交流,请加QQ群:538327407

我的各种github 开源项目和代码:https://github.com/linbin524

背景

 

笔者 目前架构的IOT 项目是使用abp 框架作为后台,虽然abp的框架适用于中小型项目框架,但由于架构优美,笔者认为还是可以经过改造,作为大型项目中使用。但IOT 的这个项目目前刚上线不久,十几天数据库已经有了上百GB,而且由于实施检查设备状态,调用设备状态维护表,审计日志压力很大,单单审计日志一天的数据量就有几十万,目前在架构上,笔者做了几个优化处理;

1、针对审计日志,笔者重写了Abp 原有的 IAuditingStore,实现mongodb和redis 两种转移,并且针对审计日志内容做了过滤,DisableAuditing特性标记指定的类或方法不进行记录。

ps:abp 虽然有mongodb 的封装,但它的出发点是和EF 同一个模式,左右系统唯一的ORM,如果要使用abp 的mongo 封装,必须要替代EF,或者重写ABP UnitOfWorkOptions,否则直接用会出现工作单元转换失败的问题。

2、站点层面使用nginx 做了反向代理,进行多站点服务,通信模式由原来的队列、改为服务化,EventBus等方式

3、数据库底层 做了Percona XtraDB Cluster—MySQL 集群处理迁移。

 

思考评估:1、审计日志这样处理,从源头做了缩减,并且进行Nosql拆分,有助于缓解数据库压力。

                 2、中间层的处理是一般IOT 中间件各种脚手架的组合,成熟,也有经过多年生产环境的检验。

                 3、数据库底层 使用Percona XtraDB Cluster,是因为它支持集群,可以缓解数据库请求压力,又支持abp的事务;

               但从真正大系统考虑,其实最理性的模式应该是分片,结合SOA、或者微服务才能真正解决底层压力,目前考量了Tidb(张善友 张队推荐的)、oceanbase(淘宝 自有数据库,生产环境十年)、mycat中间件(听说这个坑多)等,

               为了暂时不做大改造,只能先使用 Percona XtraDB Cluster,后续可能使用Orleans(Azure 云框架)、akka.net(大型的框架) 或者 Service Fabric(微服务框架)

     

二、Percona XtraDB Cluster 评估

 

 

优点如下:

1.当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需远程访问。

2.无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作。

3.良好的读负载扩展,任意节点都可以查询。

缺点如下:

1.加入新节点,开销大。需要复制完整的数据。

2.不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。

3.有多少个节点就有多少重复的数据。

 

Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案.

Percona XtraDB Cluster提供的特性有:

1.同步复制,事务要么在所有节点提交或不提交。

2.多主复制,可以在任意节点进行写操作。

3.在从服务器上并行应用事件,真正意义上的并行复制。

4.节点自动配置。

5.数据一致性,不再是异步复制。

Percona XtraDB Cluster完全兼容MySQL和Percona Server,表现在:

1.数据的兼容性

2.应用程序的兼容性:无需更改应用程序

 

1.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。

2.每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。

3.每个节点都包含完整的数据副本。

 

三、部署流程

 

1、环境准备

 

  在腾讯云上开设三个测试服务器,系统 镜像 CentOS 7.5 64

 

640?wx_fmt=png

 

用远程工具连接三台测试服务器,完成如下操作

 

(1)  关闭firewalld防火墙

# setenforce 0# sed -i 's,^SELINUX=enforcing,SELINUX=disabled,g' /etc/selinux/config

 

2、主节点部署

 

(1)安装PXC yum源

# yum install Percona-XtraDB-Cluster-56

 

最终下载下来的版本是Percona-XtraDB-Cluster-56-5.6.30

(3) 修改    /etc/my.cnf

[mysqld]datadir=/var/lib/mysql
user=mysqlwsrep_provider=/usr/lib64/galera3/libgalera_smm.so
#集群的ip
wsrep_cluster_address=gcomm://节点ip1,节点ip2,节点ip3binlog_format=ROWdefault_storage_engine=InnoDBinnodb_autoinc_lock_mode=2#当前主节点的ip
wsrep_node_address=当前节点ipwsrep_sst_method=xtrabackup-v2wsrep_cluster_name=my_centos_cluster
#初始化一个mysql的用户和密码
wsrep_sst_auth="admin:123456"

 

(4)启动主节点

mysql -uroot -p

 

(6) 登录客户端查看数据库的状态,在进行权限配置允许ip访问,默认无法远程访问,但是我们需要远程通过图形化等界面查看,所以要做如下配置

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

(2) 安装PXC

     vim  /etc/my.cnf

 

systemctl start mysql

(5)进入mysql

登录 (初始化状态,无密码,遇到要输密码直接回车)

mysql> show status like 'wsrep%';CREATE USER 'admin'@'localhost' IDENTIFIED BY '123456';//如果这里报错,看一下是否有 用户存在了GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'admin'@'localhost'; FLUSH PRIVILEGES;


 

完成后可以用Navicat For mysql 连接看一下是否可以成功访问

 (7)可以在mysql中执行如下命令查看

systemctl stop mysql@bootstrap.service
systemctl start mysql@bootstrap.service

其他节点也再次启动

 <add name="Default" connectionString="server=主节点ip;port=3306;database=abpzero4_6db;uid=admin;password=123456;" providerName="MySql.Data.MySqlClient" />

(3) 执行迁移 

640?wx_fmt=jpeg

 

 (4)查看对应的三台服务器集群都自动同步该数据库

 

 640?wx_fmt=png

(5)在Appservice 中建立测试服务进行增删改查、事务等测试

640?wx_fmt=gif

<pre style="margin-top: 0px;margin-bottom: 0px;padding: 0px;white-space: pre-wrap;overflow-wrap: break-word;font-family: " !important;"="" 12px="" courier="">using _consigneeRepository.DeleteAsync(predicate);        }    } }

640?wx_fmt=gif

在swagger ui中增删改查都已经正常,而且数据在三个数据库中正常同步

 

640?wx_fmt=png

 

针对事务,做了人为异常处理,确认会实现回滚(abp 自带工作单元处理事务)

 

640?wx_fmt=png

 

 五、后记

 这一次只是做了简单的实验性测试,后续需要在加强深入检测,才可以用生产环境中。

原文地址: https://www.cnblogs.com/linbin524/p/10150300.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CF280D-k-Maximum Subsequence Sum【模拟费用流,线段树】

正题 题目链接:https://www.luogu.com.cn/problem/CF280D 题目大意 一个长度为nnn的序列&#xff0c;mmm次操作 修改一个数询问一个区间中选出kkk段不交子段使得和最大 1≤n≤105,1≤m≤2105,1≤k≤201\leq n\leq 10^5,1\leq m\leq 2\times 10^5,1\leq k\leq 201≤n≤105,1≤…

数论练习1 ( 曹冲养猪 + [POJ 2891]Strange Way to Express Integers + 乘法逆元【带证明】)

虽然作业还没有做完&#xff0c;但是我还是放不下它&#xff0c;对此&#xff0c;我只想说&#xff1a; 今天你对作业爱理不理&#xff0c;明天它就让你补到飞起 DP先放放&#xff0c;我们要雨露均沾练习上手&#xff1a;乘法逆元题目题解代码实现曹冲养猪?&#xff08;互质的…

总结:8.9 模拟(枚举搜索)

文章目录前言考场流程T1 fansT2 huarongT3 meetT4 truth复盘T1 fansT2 huarongT3 meetT4 truth总结前言 25分… 主要的原因&#xff1a; 几乎到了考试结束才看到本次是搜索模拟&#xff01;直接当全盲的模拟做的&#xff0c;T1和T4受到极大影响贪了。几乎已经是老生常谈&…

【做题记录】[NOI2008] 假面舞会—有向图上的环与最长链

luogu 1477 [NOI2008] 假面舞会 容易发现&#xff1a; 如果图中没有环&#xff0c;那么面具种数一定是所有联通块内最长链之和&#xff0c;最少为 \(3\) 。 如果有环&#xff0c;则面具种数一定是所有环的大小的最大公约数。 那么只要求出每一个联通块内的最长链与环即可。 由…

开发.NET Core NuGet包并实现CI/CD

实际开发中我们需要对一些公共类库进行开发&#xff0c;并基于Jenkins进行CI/CD&#xff08;CI:持续集成&#xff0c;CD:持续部署&#xff09;,其他项目通过NuGet引用。上文讲述了如何搭建本地NuGet服务器并发布NuGet包&#xff0c;这里不再赘述。CI/CD流程如下图&#xff1a;首…

acwing221 龙哥的问题

acwing221 龙哥的问题 文章目录题目&#xff1a;题解&#xff1a;代码&#xff1a;题目&#xff1a; 题解&#xff1a; 代码&#xff1a; #include <bits/stdc.h> using namespace std; typedef long long ll;int phi(int x) {int ansx;for(int i2;(ll)i*i<x;i)if(x%…

AT2363-[AGC012C]Tautonym Puzzle【构造】

正题 题目链接:https://www.luogu.com.cn/problem/AT2363 题目大意 给出nnn&#xff0c;要求构造一个字符串sss&#xff0c;使得能够找出恰好nnn个子序列使得这个子序列能划分成前后相等的两份。 要求∣s∣≤200|s|\leq 200∣s∣≤200&#xff0c;字符集为[1,100][1,100][1,1…

8.10模拟:贪心、最优化思路

文章目录前言最大的收获&#xff1a;考场流程T1 alignmentT2 flowerT3 reformatT4 inverse复盘T2 flowerT3 reformatT4 inverse总结前言 305分 今天考得还算不错&#xff01;awa &#xff08;冷静&#xff0c;明天数据结构还是要先写暴力&#xff09; 因为数据结构的题就是为了…

DP专练3:征途

虽然只有1道题&#xff0c;但是含金量还是够够di 文章目录题目题解代码实现题目 题解 我们直接对答案输出格式进行处理&#xff1a;设第 iii 天走的路程为 aia_iai​&#xff0c;总路程为 S∑i1nleniS\sum_{i1}^nlen_iS∑i1n​leni​&#xff0c;那么 v∑i1m(ai−Sm)2mv∑_{i1…

云时代的.NET

编程语言从最初的0101机器码到汇编语言再到面向对象的编程&#xff0c;不断的发展&#xff0c;整个发展趋势呈现高内聚、低耦合、可重用、可理解的特点。最早编程是用机器码&#xff0c;人的大脑不像电脑&#xff0c;无法处理0101&#xff1b;后来汇编语言还是太费解&#xff0…

P6295-有标号 DAG 计数【多项式求逆,多项式ln】

正题 题目链接:https://www.luogu.com.cn/problem/P6295 题目大意 求所有nnn个点的弱联通DAGDAGDAG数量。 1≤n≤1051\leq n\leq 10^51≤n≤105 解题思路 先不考虑弱联通的限制&#xff0c;求nnn个点的DAGDAGDAG数量。 设为fif_ifi​&#xff0c;那么有式子 fn∑i1n(ni)2i(…

研究性学习:APP的隐私问题

文章目录写在前面背景&#xff08;problem&#xff09;一个实例(example)手机App用户输入隐私数据的识别与检测技术研究&#xff08;solution&#xff1f;&#xff09;&#xff08;官方&#xff09;概览背景介绍4.系统设计隐私政策引言1.收集信息2. 信息使用3. 信息披露4. 信息…

DP专练4:[SCOI 2010]股票交易(单调队列优化dp)

昨天晚上&#xff0c;初见它时&#xff0c;月黑风高&#xff0c;一个电脑&#xff0c;一支笔&#xff0c;一个人 今天秋高气爽&#xff0c;再一瞥&#xff0c;回眸间 我又来了&#xff0c;honey题目题解代码实现题目 题解 首先这种 iii 天与前面 jjj 天有关联&#xff0c;而…

【做题记录】[NOIP2016 普及组] 魔法阵

P2119 魔法阵 2016年普及组T4 题意&#xff1a; 给定一系列元素 \(\{X_i\}\) &#xff0c;求满足以下不等式的每一个元素作为 \(a,b,c,d\) 的出现次数 。 \[\begin{cases}X_a<X_b<X_c<X_d \\ X_a-X_b2\times (X_d-X_c) \\X_b-X_a<\dfrac{X_c-X_b}{3}\end{cases} \]…

P3812 【模板】线性基

P3812 【模板】线性基 题目描述 给定n个整数&#xff08;数字可能重复&#xff09;&#xff0c;求在这些数中选取任意个&#xff0c;使得他们的异或和最大 题解&#xff1a; 把所有数insert进入线性基&#xff0c;把线性基中所有元素xor起来 ans 代码&#xff1a; #incl…

“被狗啃”的按钮引发的开源社区信任危机

昨天&#xff0c;在国外民众还在欢度圣诞期间&#xff0c;开发者社区却对 Antd 开发团队发起了连番的炮轰。一觉醒来&#xff0c;他们发现由自己参与设计的、公司内网、办事系统等网页上&#xff0c;有一些按钮的上面多了一团白色的“积雪”&#xff0c;在白背景下&#xff0c;…

牛客练习赛89E-牛牛小数点【数论】

正题 题目链接:https://ac.nowcoder.com/acm/contest/11179/E 题目大意 定义f(x)f(x)f(x)表示1x\frac{1}{x}x1​的混循环节长度&#xff08;如果没有循环节就是000&#xff09;&#xff0c;TTT组询问给出l,rl,rl,r求 ∑ilrf(i)\sum_{il}^rf(i)il∑r​f(i) 1≤T≤100,1≤l≤r≤…

8.11模拟:数据结构

文章目录前言考场复盘T1 forwardT2 basketT4 square总结前言 320分 还不错啦 没有挂分还是很可贵的 &#xff08;暴力TLE就不怪我了&#xff09; T4反过来想其实就很可做了 逆向的思想需要培养&#xff08;今天T1、昨天T2也是&#xff09; 说实话今天早上状态不太好 特困生 不…

[COCI2017-2018#5] Pictionary(并查集+dfs)

贼ex的一道&#xff0c;卡了本仙女整整7个小时orz 思路容易理解&#xff0c;but码力very重要orz 我愿意花五毛钱提升我的码力&#xff0c;换个脑子也行&#xff0c;不换脸这张脸生得俊俏 luogu传送door 题目 在宇宙一个不为人知的地方&#xff0c;有一个星球&#xff0c;上面…

P4570 [BJWC2011]元素

题目描述&#xff1a; 每个矿石有序号和魔力值&#xff0c;每个矿石最多使用一次&#xff0c;且多个矿石序号不能异或为0的前提下&#xff0c;问最多可以得到多少魔力值 题解&#xff1a; 异或运算的最终结果只和用于运算的数的各位上1的数量有关&#xff0c;与各数字运算的…