主頁 > 軟體設計 > MySQL架構備份之雙機熱備——MySql 主從復制、主主復制

MySQL架構備份之雙機熱備——MySql 主從復制、主主復制

2020-12-11 12:11:05 軟體設計

M–S架構:實作雙機熱備(AB復制)

1、可以降低master讀壓力

2、可以對資料庫做“熱備”,熱備只能解決硬體master硬體故障,軟體故障等重大故障問題,但無法解決人為誤操作導致的邏輯故障(列如輸入錯誤的SQL陳述句把重要的記錄洗掉了),所以常規的備份是必須,

環境準備及要求:

1、關閉防火墻和selinux

2、hosts檔案中兩臺服務器主機名和ip地址一一對應起來

3、系統時間需要同步

4、master和slave的資料庫版本保持一致(系統版本保持一致)

思路:

1、master必須開啟二進制日志

2、slave必須開啟中繼日志

3、master和slave的server-id必須不一樣 范圍(2^23-1)

4、master和slave的初始資料一致

M–S架構操作步驟#

環境:

master:10.1.118.38

slave:10.1.118.2

1. 修改組態檔

# master:
root@master ~]# vim /etc/my.cnf
log-bin=mysql-bin
server-id = 1

# slave:
[root@slave ~]# vim /etc/my.cnf
server-id = 2
relay-log=/data/DB/relay.log    

如果relay-log=/data/DB/relay.log 路徑沒有 則新建
配置完成后,重啟mysql

2. 在master上面創建授權用戶及查看binlog資訊

master:
1>鎖表,先加鎖,防止兩邊資料不一致;如果業務還未上線,這個就沒有必要了
mysql> flush tables with read lock;

創建用戶
每個從庫使用MySQL用戶名和密碼連接到主庫,因此主庫上必須有用戶帳戶,從庫可以連接,任何帳戶都可以用于此操作,只要它已被授予 REPLICATION SLAVE權限,可以選擇為每個從庫創建不同的帳戶,或者每個從庫使用相同帳戶連接到主庫

雖然不必專門為復制創建帳戶,但應注意,復制用到的用戶名和密碼會以純文本格式存盤在主資訊存盤庫檔案或表中 ,因此,需要創建一個單獨的帳戶,該帳戶只具有復制程序的權限,以盡可能減少對其他帳戶的危害,

主庫上創建主從復制賬號
創建用戶【MySQL8.0.11和之前不一樣,語法有區別】

必須先創建用戶,授予權限
密碼規則:mysql8.0以上密碼策略限制必須要大小寫加數字特殊符號):
再進行賦值:

mysql> 
mysql> create user 'slave'@'%' identified by '1qaz@WSX';
Query OK, 0 rows affected (0.00 sec)
mysql> 
mysql> grant all privileges on slave.* to 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> 
mysql> grant replication slave on *.*  to 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql>  show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 1508
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)
# 注意:此時千萬不要往里面寫東西
ERROR: 
No query specified

mysql> 

按道理來說,應該如下圖這樣配置,指定相應的slave的IP , 但是會報錯

mysql> grant replication slave on *.*  to 'slave'@'10.1.118.2';
ERROR 1410 (42000): You are not allowed to create a user with GRANT
mysql> 

3. 在slave上配置同步資訊

從庫中不創建slave資料庫

mysql>
mysql> change master to master_host='10.1.118.38', master_user='slave', master_password='1qaz@WSX', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=1508;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql>
引數說明:
    master_host:        master ip
    master_user:        同步用戶
    master_password:    密碼
    master_port:     埠
    master_log_file:    master上面查看到的二進制日志名
    master_log_pos:     master上面查看到的POS值

# 啟動從服務器復制執行緒
mysql> 
mysql> start slave;
Query OK, 0 rows affected (0.12 sec)

mysql> 
mysql> 
mysql> show slave status \G;
查看slave發現報錯
解決:
    1.檢查組態檔里server-id是否不一致
    2.檢查資料目錄里的auto.cnf檔案的uuid是否一樣,如果一樣將slave中的auto.cnf洗掉后將master和slave的服務重啟,

mysql> show slave status \G;
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

檢查主從復制通信狀態

Slave_IO_State #從站的當前狀態
Slave_IO_Running: Yes #讀取主程式二進制日志的I/O執行緒是否正在運行
Slave_SQL_Running: Yes #執行讀取主服務器中二進制日志事件的SQL執行緒是否正在運行,與I/O執行緒一樣
Seconds_Behind_Master #是否為0,0就是已經同步了

必須都是yes

如果不是原因主要有以下 4 個方面:

1、網路不通
2、密碼不對
3、MASTER_LOG_POS 不對 ps
4、mysql 的 auto.cnf server-uuid
一樣(可能你是復制的mysql)
》》》》》》》》》》》》》》》》
$ find / -name ‘auto.cnf’
$ cat /var/lib/mysql/auto.cnf
[auto]
server-uuid=6b831bf3-8ae7-11e7-a178-000c29cb5cbc # 按照這個16進制格式,修改server-uuid,使主備不一樣即可,重啟mysql即可
》》》》》》》》》》》》》》》》

如果不是Yes, 重啟后再start slave;,然后查看狀態show slave status \G;

4. 測驗驗證

測驗一:
    先查看master和slave的ceshi庫中users表的資訊
    master:
    mysql> 
	mysql> select * from zwj.sync_test;
	+----+--------------+
	| id | name         |
	+----+--------------+
	|  1 | zhangweijian |
	+----+--------------+
	1 row in set (0.00 sec)
	mysql> 

slave:
	mysql> select * from zwj.sync_test;
	+----+--------------+
	| id | name         |
	+----+--------------+
	|  1 | zhangweijian |
	+----+--------------+
	1 row in set (0.00 sec)
	
	mysql> 

 在master上面增加資料,然后回到slave上面查看
 master:
	mysql> insert into sync_test (id, name) values(2, 'libai');
	Query OK, 1 row affected (0.00 sec)
	
	mysql> 
	mysql> select * from zwj.sync_test;
	+----+--------------+
	| id | name         |
	+----+--------------+
	|  1 | zhangweijian |
	|  2 | libai        |
	+----+--------------+
	2 rows in set (0.00 sec)
	
	mysql> 
	
slave:
	mysql> 
	mysql> select * from zwj.sync_test;
	+----+--------------+
	| id | name         |
	+----+--------------+
	|  1 | zhangweijian |
	|  2 | libai        |
	+----+--------------+
	2 rows in set (0.00 sec)
	
	mysql> 


測驗二:

    停止slave上的服務,  停掉服務后,那幾個變數變為No
	mysql> stop slave;
	Query OK, 0 rows affected (0.01 sec)
	
	mysql>
    
    在master上面插入資料并查看
	mysql> 
	mysql> insert into sync_test (id, name) values(3, 'caixukun');
	Query OK, 1 row affected (0.00 sec)
	
	mysql> 
	mysql> select * from zwj.sync_test;
	+----+--------------+
	| id | name         |
	+----+--------------+
	|  1 | zhangweijian |
	|  2 | libai        |
	|  3 | caixukun     |
	+----+--------------+
	3 rows in set (0.00 sec)
	
	mysql> 
	
查看備資料庫中是否有更新得資料(應該沒有),再次啟動slave并查看是否有更新
	mysql> 
	mysql> select * from zwj.sync_test;
	+----+--------------+
	| id | name         |
	+----+--------------+
	|  1 | zhangweijian |
	|  2 | libai        |
	+----+--------------+
	2 rows in set (0.00 sec)
	
	mysql> 
	mysql> start slave;
	Query OK, 0 rows affected (0.00 sec)
	
	mysql> 
	mysql> select * from zwj.sync_test;
	+----+--------------+
	| id | name         |
	+----+--------------+
	|  1 | zhangweijian |
	|  2 | libai        |
	|  3 | caixukun     |
	+----+--------------+
	3 rows in set (0.00 sec)
	
	mysql> 



1、測驗表明只能在master端上面進行寫然后再同步到slave端,
2、如果slave服務關閉后可以不用管理,然后再在master端可以繼續寫入,等到slave服務啟動后,會自動同步到slave端,

主主復制

主主復制在以上主從復制基礎上進行,

在主主復制結構中,兩臺服務器的任何一臺上面的資料庫存發生了改變都會同步到另一臺服務器上,這樣兩臺服務器互為主從,并且都能向外提供服務,配置的時候需要注意:主鍵重復,server-id不能重復,

相對于主:10.1.118.2
從: 10.1.118.38 之前相反

----10.1.118.38

   bind-address = 0.0.0.0 
   server-id=11   #任意自然數n,只要保證兩臺MySQL主機不重復就可以了,

   log-bin=mysql-bin   #開啟二進制日志

   auto_increment_increment=2   #步進值auto_imcrement,一般有n臺主MySQL就填n

   auto_increment_offset=1   #起始值,一般填第n臺主MySQL,此時為第一臺主MySQL

   binlog-ignore=mysql   #忽略mysql庫【我一般都不寫】

   binlog-ignore=information_schema   #忽略information_schema庫【我一般都不寫】

   replicate-do-db=aa   #要同步的資料庫,默認所有庫

實體:
在這里插入圖片描述

----10.1.118.2
實體:
在這里插入圖片描述

二者只有server-id不同和 auto-increment- offset不同
auto-increment-offset是用來設定資料庫中自動增長的起點的,兩個服務器都設定了一次自動增長值2,所以它們的起點必須得不同,這樣才能避免兩臺服務器資料同步時出現主鍵沖突
replicate-do-db 指定同步的資料庫,我們只在兩臺服務器間同步test資料庫,auto-increment-increment的值應設為整個結構中服務器的總數,本例用到兩臺服務器,所以值設為2

重啟mysql 服務

1. 在10.1.118.2中創建一個10.1.118.38主機中可以登錄的MySQL用戶

mysql> 
mysql> create user 'master1'@'%' identified by '1qaz@WSX';
Query OK, 0 rows affected (0.01 sec)

mysql> 
mysql> 
mysql> grant replication slave on *.*  to 'master1'@'%';
Query OK, 0 rows affected (0.08 sec)
mysql> 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> show grants for 'master1'@'%';
+-------------------------------------------------+
| Grants for master1@%                            |
+-------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `master1`@`%` |
+-------------------------------------------------+
1 row in set (0.00 sec)

mysql> 
mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 2953
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

ERROR: 
No query specified

mysql> 

2. 在10.1.118.38 中進行配置同步資訊

mysql> 
mysql> select User from mysql.user;
+------------------+
| User             |
+------------------+
| eb_vnfm          |
| root1            |
| slave            |
| eb_vnfm          |
| mysql.infoschema |
| mysql.session    |
| mysql.sys        |
+------------------+
7 rows in set (0.00 sec)
 
mysql> 
mysql> change master to master_host='10.1.118.2', master_user='master1', master_password='1qaz@WSX', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=2953;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> 
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

mysql> 
mysql> show slave status \G;
查看之前那幾個引數 是否為yes
   Slave_IO_Running: Yes
   Slave_SQL_Running: Yes

如圖:
在這里插入圖片描述
3. 在10.1.118.2上 開啟start slave,檢測主從復制 是否成功

在這里插入圖片描述
報1602 經典錯誤,誤把從節點當成主節點插入一條資料,同一條資料在主、從節點插入都進行了一次插入操作,導致主鍵沖突,slave下的SQL執行緒例外,

解決方法:

set global sql_slave_skip_counter=1;

在這里插入圖片描述
配置正常

4. 測驗

在10.1.118.38上

10.1.118.38上
	mysql> 
	mysql>  select * from zwj.sync_test;
	+----+--------------+
	| id | name         |
	+----+--------------+
	|  1 | zhangweijian |
	|  2 | libai        |
	|  3 | caixukun     |
	|  4 | liziqi       |
	+----+--------------+
	4 rows in set (0.00 sec)
	
	mysql> 
	mysql> insert into sync_test (id, name) values(5, 'mabaoguo');
	Query OK, 1 row affected (0.00 sec)
	

在10.1.118.2 上

10.1.118.2 上	
	mysql> 
	mysql>  select * from zwj.sync_test;
	+----+--------------+
	| id | name         |
	+----+--------------+
	|  1 | zhangweijian |
	|  2 | libai        |
	|  3 | caixukun     |
	|  4 | liziqi       |
	|  5 | mabaoguo     |
	+----+--------------+
	5 rows in set (0.00 sec)
	
	mysql> 
	mysql> 
	mysql> insert into sync_test (id, name) values(6, 'wangye');
	Query OK, 1 row affected (0.00 sec)

	mysql> 


然后在 38 上查看

10.1.118.38上
	mysql> 
	mysql>  select * from zwj.sync_test;
	+----+--------------+
	| id | name         |
	+----+--------------+
	|  1 | zhangweijian |
	|  2 | libai        |
	|  3 | caixukun     |
	|  4 | liziqi       |
	|  5 | mabaoguo     |
	|  6 | wangye       |
	+----+--------------+
	6 rows in set (0.00 sec)
	
	mysql> 

如果有興趣,可以接著測驗,在10.1.118.2 上,停掉slave,變成主(38)從(2)
在這里插入圖片描述
在10.118.38上,插入一條資料
在這里插入圖片描述
在10.1.118.2 上查看,并沒有復制同步過去
在這里插入圖片描述
同理,緊接著在 2 上,插入一條資料
在這里插入圖片描述
在 38 上可以看到同步過去了
在這里插入圖片描述
現在打開10.1.118.2 上的slave,
在這里插入圖片描述
可以看到,之前在38 上添加的資料,打開slave后,同步過來了
在這里插入圖片描述
6. 注意事項

1、主主復制組態檔中auto_increment_increment和auto_increment_offset只能保證主鍵不重復,卻不能保證主鍵有序,

 2、當配置完成Slave_IO_Running、Slave_SQL_Running不全為YES時,show slave status\G資訊中有錯誤提示,可根據錯誤提示進行更正,

 3、Slave_IO_Running、Slave_SQL_Running不全為YES時,大多數問題都是資料不統一導致,

 常見出錯點:

 1、兩臺資料庫都存在db資料庫,而第一臺MySQL db中有tab1,第二臺MySQL db中沒有tab1,那肯定不能成功,

 2、已經獲取了資料的二進制日志名和位置,又進行了資料操作,導致POS發生變更,在配置CHANGE MASTER時還是用到之前的POS,

 3、stop slave后,資料變更,再start slave,出錯,

 終極更正法:重新執行一遍CHANGE MASTER就好了,

若出現如下圖所示錯誤2003,連接不通過,則說明mysqld.cnf 中的bind_address未修改為0.0.0.0,如果要讓mysql監聽到其他的地址,可以將bind-address = 127.0.0.1注釋掉,或者將bind-address = 0.0.0.0監聽所有的地址
在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/233120.html

標籤:其他

上一篇:SpringBoot整合云服務器下的FastDFS實作檔案上傳

下一篇:教小師妹快速入門Mybatis,看這篇就夠了

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more