七、Docker常規軟件安裝

目錄

一、總體步驟

二、安裝tomcat

1、docker hub上查找tomcat鏡像

三、安裝MySQL

1、查看MySQL鏡像

2、拉取MySQL鏡像到本地,本次拉取MySQL5.7

3、使用MySQL鏡像創建容器

4、使用Windows數據庫工具,連接MySQL實例

5、常見問題

6、創建MySQL容器實例

7、新建my.cnf通過容器卷同步給MySQL容器實例

8、重啟下MySQL容器實例

9、進入MySQL

四、安裝redis

1、拉取鏡像

2、啟動鏡像創建容器實例

3、在宿主機新建redis目錄,/usr/redis 作為docker容器的宿主機目錄

4、啟動redis鏡像創建redis實例

5、測試redis連接


一、總體步驟

1、搜索鏡像

2、拉去鏡像

3、查看鏡像

4、啟動鏡像

5、停止容器

6、移除容器

二、安裝tomcat

1、docker hub上查找tomcat鏡像

#查找鏡像
[root@localhost tmp]# docker search tomcat
#拉去tomcat 鏡像
[root@localhost tmp]# docker pull tomcat
#docker images 查看拉去的tomcat鏡像
[root@localhost tmp]# docker images tomcat
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
tomcat       latest    fb5657adc892   2 years ago   680MB#使用tomcat鏡像創建容器實例(也叫運行鏡像)
[root@localhost tmp]# docker run -d -p 8080:8080 --name tomcat1 tomcat
e2770f6be6dc13015344e36c4e54769df600708b696e767690ada53f2c4972b5
[root@localhost tmp]# 
[root@localhost tmp]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
e2770f6be6dc   tomcat    "catalina.sh run"   7 seconds ago   Up 6 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat1
[root@localhost tmp]# 
#訪問tomcat首頁
http://192.168.153.128:8080/
可能會報錯 404未找到
原因是tomcat新版本,對于首頁的訪問發生了些許的改變。屬于正常。有以下原因
1、可能沒有映射端口,或者沒有關防火墻,我們剛才也映射了,防火墻也是關著的
2、把webapps.dist目錄換成webapps,進入容器
[root@localhost tmp]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
e2770f6be6dc   tomcat    "catalina.sh run"   5 minutes ago   Up 5 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat1
[root@localhost tmp]# 
[root@localhost tmp]# docker exec -it e2770f6be6dc /bin/bash
root@e2770f6be6dc:/usr/local/tomcat# root@e2770f6be6dc:/usr/local/tomcat# pwd
/usr/local/tomcatroot@e2770f6be6dc:/usr/local/tomcat# ls -l
total 132
-rw-r--r--. 1 root root 18994 Dec  2  2021 BUILDING.txt
-rw-r--r--. 1 root root  6210 Dec  2  2021 CONTRIBUTING.md
-rw-r--r--. 1 root root 60269 Dec  2  2021 LICENSE
-rw-r--r--. 1 root root  2333 Dec  2  2021 NOTICE
-rw-r--r--. 1 root root  3378 Dec  2  2021 README.md
-rw-r--r--. 1 root root  6905 Dec  2  2021 RELEASE-NOTES
-rw-r--r--. 1 root root 16517 Dec  2  2021 RUNNING.txt
drwxr-xr-x. 2 root root  4096 Dec 22  2021 bin
drwxr-xr-x. 1 root root    22 Jun 22 12:10 conf
drwxr-xr-x. 2 root root  4096 Dec 22  2021 lib
drwxrwxrwx. 1 root root    80 Jun 22 12:10 logs
drwxr-xr-x. 2 root root   159 Dec 22  2021 native-jni-lib
drwxrwxrwx. 2 root root    30 Dec 22  2021 temp
drwxr-xr-x. 2 root root     6 Dec 22  2021 webapps
drwxr-xr-x. 7 root root    81 Dec  2  2021 webapps.dist
drwxrwxrwx. 2 root root     6 Dec  2  2021 work
root@e2770f6be6dc:/usr/local/tomcat# 
root@e2770f6be6dc:/usr/local/tomcat# rm -r webappsroot@e2770f6be6dc:/usr/local/tomcat# mv webapps.dist webapps
root@e2770f6be6dc:/usr/local/tomcat# 
然后就可以訪問了。
#tomcat10比較麻煩 還需要改配置,我們把它干掉,拉一個tomcat8就行
[root@localhost tmp]# docker run -d -p 8080:8080 --name tomcat8 billygoo/tomcat8-jdk8
就可以了。

三、安裝MySQL

1、查看MySQL鏡像

[root@localhost tmp]# docker search mysql

2、拉取MySQL鏡像到本地,本次拉取MySQL5.7

[root@localhost tmp]# docker pull mysql:5.7
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
[root@localhost tmp]# [root@localhost tmp]# docker images mysql:5.7
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        5.7       c20987f18b13   2 years ago   448MB
[root@localhost tmp]# 
[root@localhost tmp]#

3、使用MySQL鏡像創建容器

[root@localhost tmp]# docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
166c10ed2b7414f791042a20a0018ba4a955d30583e54f7c316623cb2546e0d2
docker: Error response from daemon: driver failed programming external connectivity on endpoint infallible_einstein (590077e55eca8279f5c4162f540bcd44499fe3c4a80a5f5091af66b322964ebd): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.
#有個報錯,原因是我Linux 服務器上安裝了MySQL8.0,提示3306端口被占用。所以創建不了容器,
修改一下映射端口
[root@localhost tmp]# docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
505ed9996b3c74c0f0791454ad6352639d04990960bfc94283bb57a38a256d51
[root@localhost tmp]# 
[root@localhost tmp]# docker ps
[root@localhost tmp]# docker exec -it 505ed9996b3c /bin/bash
root@505ed9996b3c:/# 
#進入MySQL
root@505ed9996b3c:/# mysql -uroot -p123456
#成功通過MySQL鏡像運行了一個實例
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)mysql> 
mysql> create database test;
Query OK, 1 row affected (0.00 sec)mysql> use test;
Database changed
mysql> 
mysql> create table t1(id int,name varchar(20));
Query OK, 0 rows affected (0.01 sec)mysql> insert into t1 values(1,'z3');
Query OK, 1 row affected (0.01 sec)mysql> select * from  t1;
+------+------+
| id   | name |
+------+------+
|    1 | z3   |
+------+------+
1 row in set (0.00 sec)mysql>
沒問題哈。

4、使用Windows數據庫工具,連接MySQL實例

5、常見問題

(1)、插入中文報錯
因為docker 上默認字符集編碼沒有修正
在docker 里邊的MySQL容器實例查看
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)mysql>

有個疑問,就是如果哪天把容器實例刪除了,怎么辦?跑路?

所以,我們在創建MySQL實例時候,掛載數據卷,來解決數據丟失的問題。

把這個容器干掉,我們重新創建容器實例

6、創建MySQL容器實例

[root@localhost ~]# docker run -d -p 3307:3307 --privileged=true 
-v /usr/mysql/log:/var/log/mysql 
-v /usr/mysql/data:/var/lib/mysql 
-v /usr/mysql/conf:/etc/mysql/conf.d 
-e MYSQL_ROOT_PASSWORD=123456 
--name=mysql 
mysql:5.7
18a1e538c92be54d8192a992d43f4a1d4339e7d62403985a0fe7fb9d0c106511
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                                            NAMES
18a1e538c92b   mysql:5.7   "docker-entrypoint.s…"   6 seconds ago   Up 3 seconds   3306/tcp, 33060/tcp, 0.0.0.0:3307->3307/tcp, :::3307->3307/tcp   mysql

7、新建my.cnf通過容器卷同步給MySQL容器實例

[root@localhost conf]# vim my.cnf
[root@localhost conf]# 
[root@localhost conf]# cat my.cnf 
[client]
user=root
password=xxxxxx
default-character-set=utf8[mysql]
prompt=(\\u@\\h) [\\d]>\\_[mysqld]
port = 3307
collation_server = utf8_general_ci
character-set-server=utf8

8、重啟下MySQL容器實例

[root@localhost ~]# docker restart mysql
mysql
[root@localhost ~]# 
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS        PORTS                                                            NAMES
18a1e538c92b   mysql:5.7   "docker-entrypoint.s…"   11 minutes ago   Up 1 second   3306/tcp, 33060/tcp, 0.0.0.0:3307->3307/tcp, :::3307->3307/tcp   mysql

9、進入MySQL

[root@localhost ~]# docker exec -it 18a1e538c92b /bin/bash
root@18a1e538c92b:/# 
root@18a1e538c92b:/# 
root@18a1e538c92b:/# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.(root@localhost) [(none)]>
查看字符集
(root@localhost) [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
然后建庫,建表,添加數據
(root@localhost) [(none)]> create database test;
Query OK, 1 row affected (0.00 sec)(root@localhost) [(none)]> use test;
Database changed
(root@localhost) [test]> 
(root@localhost) [test]> create table test1(a int,b varchar(20));
Query OK, 0 rows affected (0.01 sec)(root@localhost) [test]> insert into test1 values(1,'wu');
Query OK, 1 row affected (0.00 sec)(root@localhost) [test]> select * from test1;
+------+------+
| a    | b    |
+------+------+
|    1 | wu   |
+------+------+
1 row in set (0.00 sec)
#客戶端插入中文演示
insert INTO test1 VALUES (2,'武');
(root@localhost) [test]> select * from test1;
+------+------+
| a    | b    |
+------+------+
|    1 | wu   |
|    2 | 武   |
+------+------+
2 rows in set (0.01 sec)總結:docker 安裝MySQL并run之后,建議先修改字符集編碼后,在新建庫表,和插入數據。
還有一定要掛載容器數據卷,以免那個坑貨,把mysql容器刪了,數據丟失。

四、安裝redis

1、拉取鏡像

[root@localhost ~]# docker pull redis:6.0.8
6.0.8: Pulling from library/redis
bb79b6b2107f: Pull complete 
1ed3521a5dcb: Pull complete 
5999b99cee8f: Pull complete 
3f806f5245c9: Pull complete 
f8a4497572b2: Pull complete 
eafe3b6b8d06: Pull complete 
Digest: sha256:21db12e5ab3cc343e9376d655e8eabbdbe5516801373e95a8a9e66010c5b8819
Status: Downloaded newer image for redis:6.0.8
docker.io/library/redis:6.0.8
[root@localhost ~]# 
[root@localhost ~]# docker images redis
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
redis        6.0.8     16ecd2772934   3 years ago   104MB
[root@localhost ~]# 
[root@localhost ~]# 

2、啟動鏡像創建容器實例

#因為我宿主機有redis,6379端口被占用,所以我映射成6380端口
[root@localhost ~]# docker run -d -p 6380:6380 redis:6.0.8
5c4d11ca385f31015b86bb9985a7533261c359718ec390b2104e5258042bd09b
[root@localhost ~]# 
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS                                                            NAMES
5c4d11ca385f   redis:6.0.8   "docker-entrypoint.s…"   4 seconds ago    Up 3 seconds    6379/tcp, 0.0.0.0:6380->6380/tcp, :::6380->6380/tcp              charming_dirac
18a1e538c92b   mysql:5.7     "docker-entrypoint.s…"   43 minutes ago   Up 24 minutes   3306/tcp, 33060/tcp, 0.0.0.0:3307->3307/tcp, :::3307->3307/tcp   mysql
[root@localhost ~]# [root@localhost ~]# docker exec -it 5c4d11ca385f /bin/bash
root@5c4d11ca385f:/data# 
root@5c4d11ca385f:/data# redis-cli
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379>

是不是很簡單,當你覺得簡單時候,那就大錯特錯了

當你容器刪除時候,數據怎么辦。是不是還得考慮數據丟失的問題。那么就需要掛載數據卷

我們先把這個容器刪除

[root@localhost ~]# docker rm -f 5c4d11ca385f

3、在宿主機新建redis目錄,/usr/redis 作為docker容器的宿主機目錄

[root@localhost usr]# mkdir redis
[root@localhost redis]# pwd
/usr/redis
把redis配置文件拷貝到這個目錄。redis配置文件,找之前的
[root@localhost redis-6.2.6]# cp redis.conf /usr/redis/
[root@localhost redis-6.2.6]# 
[root@localhost redis-6.2.6]# cd /usr/redis/
[root@localhost redis]# 
[root@localhost redis]# ll
total 92
-rw-r--r--. 1 root root 93975 Jun 23 15:59 redis.conf
[root@localhost redis]# 
修改配置文件,
daemonize no 改為no,默認是yes
port 6380端口改為6380
bind 0.0.0.0 注釋掉 運行外部訪問

4、啟動redis鏡像創建redis實例

[root@localhost ~]# docker run -p 6380:6380 --name=redis 
--privileged=true 
-v /usr/redis/redis.conf:/etc/redis/redis.conf 
-v /usr/redis/data:/data 
-d redis:6.0.8 
redis-server /etc/redis/redis.conf
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS                                                            NAMES
e23744ebb4f4   redis:6.0.8   "docker-entrypoint.s…"   6 minutes ago   Up 6 seconds   6379/tcp, 0.0.0.0:6380->6380/tcp, :::6380->6380/tcp              redis
18a1e538c92b   mysql:5.7     "docker-entrypoint.s…"   2 hours ago     Up 2 hours     3306/tcp, 33060/tcp, 0.0.0.0:3307->3307/tcp, :::3307->3307/tcp   mysql
[root@localhost ~]# 

終于起來了,搞了半個小時呀,因為我是直接拷貝的原來的redis配置文件,之前版本是6.2多。

現在版本是6.0,可能好多參數都不兼容。導致容器起不來,通過觀察日志。看到報錯,一個一個處理了。

心累

5、測試redis連接

[root@localhost ~]# docker exec -it e23744ebb4f4 /bin/bash
root@e23744ebb4f4:/data#
#因為偶我映射的端口是6380,配置文件有指定密碼,所以連接時候要制定端口和密碼
root@e23744ebb4f4:/data# redis-cli -p 6380 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6380> 
127.0.0.1:6380> 
127.0.0.1:6380> ping
PONG
127.0.0.1:6380> 安裝完成!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42893.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42893.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42893.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DDP:微軟提出動態detection head選擇,適配計算資源有限場景 | CVPR 2022

DPP能夠對目標檢測proposal進行非統一處理,根據proposal選擇不同復雜度的算子,加速整體推理過程。從實驗結果來看,效果非常不錯 來源:曉飛的算法工程筆記 公眾號 論文: Should All Proposals be Treated Equally in Object Detect…

同聲傳譯app哪個好免費?對話交流推薦這5個

暑期到,也是旅游出行的好日子~自打周邊不少國家都開放免簽政策之后,出國游也變得更加方便了~對于外語水平不高的朋友來講,想要保證出行體驗,其實手上只要備好一個同聲傳譯app就OK! 倘若你還不清楚都有哪些同聲傳譯app…

背部筋膜炎的癥狀及治療

背部筋膜炎,也稱為胸背肌筋膜炎,主要是由于勞損或風寒濕邪侵入引起的。其典型癥狀主要包括: 1、疼痛:背部筋膜一旦出現炎癥性病變,會對周圍交感神經組織產生刺激作用,從而引起不同程度的疼痛癥狀。 2、僵…

NAT:地址轉換技術

為什么會引入NAT? NAT(網絡地址轉換)的引入主要是為了解決兩個問題 IPv4地址短缺:互聯網快速發展,可用的公網IP地址越來越少。網絡安全:需要一種方法來保護內部網絡不被直接暴露在互聯網上。 IPv4 &…

低通濾波以及卡爾曼濾波

先講解幾個低通濾波,低通濾波比卡爾曼濾波簡單,因為卡爾曼濾波涉及到兩個輸入量,一個是控制量,一個是觀測量,而低通濾波是一個輸入量 1,利用工具箱配置低通濾波 參考地址:https://blog.csdn.net…

SystemUIService啟動-Android13

SystemUIService啟動-Android13 1、SystemUIService啟動2、其他SystemUI services啟動2.1 Dagger依賴注入2.2 Recents為例 1、SystemUIService啟動 SystemUI啟動&#xff0c;及其SystemUIService啟動 <!-- SystemUi service component --><string name"config_s…

應用層協議原理——可供應用程序使用的運輸服務

前面講過套接字是應用程序進程和運輸層協議之間的接口。在發送端的應用程序將報文推進該套接字。在該套接字的另一側&#xff0c;運輸層協議負責使該報文進入接收進程的套接字。 包括因特網在內的很多網絡提供了不止一種運輸層協議。當開發一個應用時&#xff0c;必須選擇一種可…

什么是海外倉管理自動化?策略及落地實施步驟指南

作為海外倉的管理者&#xff0c;你每天都面臨提高海外倉運營效率、降低成本和滿足客戶需求的問題。海外倉自動化管理技術為這些問題提供了不錯的解決思路&#xff0c;不過和任何新技術一樣&#xff0c;從策略到落地實施&#xff0c;都有一個對基礎邏輯的認識過程。 今天我們整…

重生奇跡mu的地圖名

地圖之一&#xff1a;勇者大陸 勇者大陸地處奇跡大陸中央。終年陰雨連綿&#xff0c;氣候潮濕悶熱。植物由充滿黑暗陰森氣氛的草地所構成。這里的NPC數量是所有地圖中最多的。因為地步交通要沖&#xff0c;所以也是玩家聚集最多的地方。 這里是劍士、魔法師、魔劍士和圣導師初…

vue3關于在線考試 實現監考功能 推流拉流

vue3 關于在線考試 實現監考功能&#xff0c; pc端考試 本質是直播推流的功能 使用騰訊云直播: 在線文檔 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><link rel"icon" href"/f…

永磁同步電機控制算法--最大轉矩電流比控制(虛擬信號注入法)

目前&#xff0c;國內外相關學者對 MTPA 控制方法進行了一系列的理論研究與仿真分析。通過研究取得的成果綜合來看&#xff0c;該控制方法主要有&#xff1a;直接公式計算法、曲線擬合法、查表法、搜索法、高頻信號注入法以及參數辨識法等。 之前的文章中已經介紹了直接公式計…

Java.Maths類的常用方法

Maths類的常用方法 Math 類是 Java 標準庫中的一個類&#xff0c;位于 java.lang 包中。它提供了一些基本的數學操作方法&#xff0c;這些方法都是靜態的。以下是 Math 類的所有方法&#xff1a; 數學常量 double E: 自然對數的底數&#xff08;約等于 2.718&#xff09;doub…

對于“百模大戰”,幾乎所有大佬的口風都180 °大轉變了?

文 | 智能相對論 作者 | 陳泊丞 在2024世界人工智能大會暨人工智能全球治理高級別會議產業發展主論壇上&#xff0c;百度創始人、董事長兼首席執行官李彥宏談了些對于AI大模型的看法&#xff0c;語驚四座。 他先是指出&#xff0c;“百模大戰造成了社會資源的巨大浪費&#x…

ubuntu 如何復制文件夾的內容

在Ubuntu中&#xff0c;您可以使用cp命令來復制文件夾的內容。如果您想要復制文件夾及其所有內容&#xff08;包括子文件夾&#xff09;&#xff0c;可以使用-r&#xff08;遞歸&#xff09;選項。 cp -r /path/to/source/folder/* /path/to/destination/folder/ 這個命令會將s…

現在2024年網絡安全真實情況還好就業嗎?_2024年網絡安全專業到底行不行了

2024年網絡安全行業的前景看起來非常樂觀。根據當前的趨勢和發展&#xff0c;一些趨勢和發展可能對2024年網絡安全行業產生影響&#xff1a; 5G技術的廣泛應用&#xff1a;5G技術的普及將會使互聯網的速度更快&#xff0c;同時也將帶來更多的網絡威脅和安全挑戰。網絡安全專家…

java-spring boot光速入門教程(超詳細!!)

目錄 一、引言 1.1 初始化配置 1.2 整合第三方框架 1.3 后期維護 1.4 部署工程 1.5 敏捷式開發 二、SpringBoot介紹 spring boot 2.1 搭建一個spring boot工程 2.2 使用idea創建項目 2.3 在線創建姿勢 2.4 項目的目錄結構 2.5 項目的運行方式 2.6 yml文件格式 2…

CP AUTOSAR標準之XCP(AUTOSAR_CP_SWS_XCP)(更新中……)

1 簡介和功能概述 該規范規定了AUTOSAR基礎軟件模塊XCP的功能、API和配置。XCP是主設備(工具)和從設備(設備)之間的協議描述(ASAM標準),提供以下基本功能: 同步數據采集(測量)同步數據刺激(用于快速原型設計)在線內存校準(讀/寫訪問)校準數據頁面初始化和切換用于ECU開發目的…

分享外貿工作中常用英文標準表達和英文語句

常用英文表達 報拉格斯最低到岸價 quote the lowest price CIF Lagos經營紡織品多年 be in the line of textiles for many years貨物受歡迎 the goods are very popular with customers / have met with a warm reception /be well received/accepted/ enjoy a wide populari…

Java線程死鎖及解決方法

多線程環境下&#xff0c;死鎖即兩個或兩個以上的線程去爭奪同一個共享資源&#xff0c;而導致互相等待的情況。 要產生死鎖&#xff0c;必須滿足如下四個條件&#xff1a; 互斥條件&#xff0c;共享資源x和y只能被一個線程占有請求和保持條件&#xff0c;T1持有x&#xff0c…

解讀BASE理論:高可用性與性能的完美平衡

Base概念 BASE 理論是一種處理大規模分布式系統中的數據一致性問題的思路。相比于傳統的嚴格一致性&#xff0c;它更靈活&#xff0c;適用于那些需要高可用性和性能的系統。BASE 理論由三個部分組成&#xff1a; 基本可用&#xff08;Basically Available&#xff09; 基本可用…