Greenplum 4.3 For Centos 6.5 安裝指南

来源:http://www.cnblogs.com/tetta/archive/2016/11/08/6043691.html
-Advertisement-
Play Games

1.greenplum資料庫安裝前期準備工作 1.1 安裝Linux l 記憶體:最小1GB,推薦2GB或以上。 l 交換空間: 記憶體大小是1-2GB時,交換空間是記憶體的1.5倍,記憶體大小2-16GB時,交換空間等於記憶體大小,記憶體大小16G以上時,交換空間為16GB。 l 需要選擇以下組件:GNOME ...


1.greenplum資料庫安裝前期準備工作

1.1 安裝Linux

l  記憶體:最小1GB,推薦2GB或以上。

l  交換空間: 記憶體大小是1-2GB時,交換空間是記憶體的1.5倍,記憶體大小2-16GB時,交換空間等於記憶體大小,記憶體大小16G以上時,交換空間為16GB。

l  需要選擇以下組件:GNOME桌面、編輯器、開發工具、開發庫等,具體參照Linux標準文檔。

l  使用安裝光碟安裝CentOS-6.5-x86_64-bin

l  Greenplum 資料庫版本 4.3.9.1

 

1.2 配置系統信息,做安裝Greenplum的準備工作

1.2.1  Greenplum集群介紹

這裡使用1個master,3個segment的集群,ip為:

196.168.0.56
196.168.0.57
196.168.0.58
196.168.0.59

 

其中196.168.0.56為master,其餘為segment。

 

1.2.2  修改/etc/hosts文件(所有的機器都要修改)

這裡主要是為之後Greenplum能夠在各個節點之間相互通信做準備,添加如下:

格式為:主機ip地址 主機名

[root@mdw ~]# vi /etc/hosts

192.168.0.56 mdw
192.168.0.57 sdw1
192.168.0.58 sdw2
192.168.0.59 sdw3

 

註意:一定要按照這個格式寫,參數代表的含義,上面已經做出說明。

 

配置了這個文件之後,需要繼續修改hostname,即修改/etc/sysconfig/network這個文件。

如下(所有機器都要修改)

[root@mdw ~]# vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=mdw

 

註意:這裡修改hostname,需要重啟之後方可生效,如需立即生效,需使用hostname命令。

[root@mdw ~]# hostname mdw

 

這裡的HOSTNAME一定要與/etc/hosts中的主機名一致,最終可以使用ping命令測試是否配置好了:

[root@mdw ~]# ping sdw1

PING sdw1 (192.168.0.57) 56(84) bytes of data.
64 bytes from sdw1 (192.168.0.57): icmp_seq=1 ttl=64 time=1.14 ms
64 bytes from sdw1 (192.168.0.57): icmp_seq=2 ttl=64 time=0.726 ms
64 bytes from sdw1 (192.168.0.57): icmp_seq=3 ttl=64 time=0.714 ms

--- sdw1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2279ms
rtt min/avg/max/mdev = 0.714/0.862/1.148/0.204 ms

[root@mdw ~]# ping sdw2 PING sdw2 (192.168.0.58) 56(84) bytes of data. 64 bytes from sdw2 (192.168.0.58): icmp_seq=1 ttl=64 time=0.940 ms --- sdw2 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 971ms rtt min/avg/max/mdev = 0.940/0.940/0.940/0.000 ms [root@mdw ~]# ping sdw3 PING sdw3 (192.168.0.59) 56(84) bytes of data. 64 bytes from sdw3 (192.168.0.59): icmp_seq=1 ttl=64 time=1.62 ms 64 bytes from sdw3 (192.168.0.59): icmp_seq=2 ttl=64 time=0.669 ms --- sdw3 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1146ms rtt min/avg/max/mdev = 0.669/1.148/1.627/0.479 ms

一定要使用主機名來測試,使用ip地址測試無效。

註意:修改了/etc/sysconfig/network 後,可以將/home/gpadmin/.gphostcache 刪除掉,因為如果在修改network文件之前執行過gpssh-exkeys,可能會在gphostcache文件中生成主機名和hostlist配置中的名字形成對應關係,而greenplum之後不會再修改這個文件。

 

1.2.3  創建用戶和用戶組(所有機器都要創建)

[root@mdw ~]# groupadd -g 530 gpadmin
[root@mdw ~]# useradd -g 530 -u530 -m -d /home/gpadmin -s /bin/bash gpadmin
[root@mdw ~]# passwd gpadmin

Changing password for user gpadmin.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

 

1.2.4  修改系統內核(所有的機器都要修改)

[root@mdw ~]# vi /etc/sysctl.conf

kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 1025 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2

 

執行以下命令使參數生效:

[root@dw-greenplum-1~]# sysctl -p

註意:每台機器都要修改,不然就會初始化不成功。

 

1.2.5  修改文件打開限制(每台機器都要修改):

[root@mdw ~]# vi /etc/security/limits.conf
# End of file
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

在這個文件末尾,添加上面四行就可以了。

 

1.2.6  關閉防火牆(每台機器都要)

[root@mdw ~]# service iptables stop

(或者開放5432埠,該埠之後會用到)
[root@mdw ~]# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@mdw ~]# /etc/rc.d/init.d/iptables save

 

除此之外,還需關閉SELINUX

[root@mdw selinux]# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

 

好了現在準備工作已經做好了,可以開始安裝Greenplum了。

2 安裝Greenplum

2.1  創建安裝文件目錄(每台機器都需要創建)

[root@mdw ~]# mkdir /opt/greenplum
[root@mdw ~]# chown -R gpadmin:gpadmin /opt/greenplum

之後安裝文件,就放在這個目錄下麵

 

2.2  下載安裝包

官網 https://network.pivotal.io/products/pivotal-gpdb

註意:下載安裝包之前,需要在官網註冊賬號,方可下載。

(1)選擇最新發佈版本

 

 

(2)選擇最後一個 4.3.9.1 Database Server

 

 

(3)選擇第二個 Greenplum Database 4.3.9.1 for Red Hat Enterprise Linux 5,6 and 7

 

 

2.3  master上安裝Greenplum(只需master即可)

上傳Greenplum的安裝文件greenplum-db-4.3.9.1-build-1-RHEL5-x86_64.zip並解壓縮。

# unzip ./greenplum-db-4.3.9.1-build-1-RHEL5-x86_64.zip

 

在root用戶下,將下載的文件放在CentOS系統中自己能找到的位置即可,給該文件賦予可執行許可權,之後執行該文件,即開始安裝

# chmod +x greenplum-db-4.3.9.1-build-1-RHEL5-x86_64.bin
# ./greenplum-db-4.3.9.1-build-1-RHEL5-x86_64.bin

 

期間需要修改預設安裝目錄,輸入 /opt/greenplum/greenplum-db-4.3.9.1之後即可安裝成功,此時master上的Greenplum安裝成功了。

 

但是之前我們都是以root身份安裝的,所以要將安裝目錄下的文件的所有者,都修改為gpadmin。

[root@mdw ~]# chown -R gpadmin:gpadmin /opt/greenplum

 

因為只在master上安裝了Greenplum,所以接下來要將安裝包批量發送到每個segment上,才能算是整個集群完整安裝了Greenplum。

下麵的操作都是為了連接所有節點,並將安裝包發送到每個節點。

 

 

2.4  創建配置文件

[root@mdw ~]# su – gpadmin
[gpadmin@mdw ~]$ mkdir conf
[gpadmin@mdw ~]$ cd conf
[gpadmin@mdw conf]$ vi hostlist

mdw
sdw1
sdw2
sdw3

[gpadmin@mdw conf]$ vi seg_hosts

sdw1
sdw2
sdw3

 

註意:此時需要轉換成gpadmin身份來操作了,按照上面的文件內容創建hostlist和seg_hosts文件備用。

hostlist存儲了所有節點的主機名,seg_hosts存儲了所有從節點的主機名。

這裡文件中的mdw、sdw1、sdw2、sdw3即為之前在 /etc/hosts文件中配置的最後一個參數。

 

2.5  打通所有節點

greenplum_path.sh中保存了運行Greenplum的一些環境變數設置,包括GPHOOME、PYTHONHOME等設置。

[gpadmin@mdw ~]$ source /opt/greenplum/greenplum-db/greenplum_path.sh

[gpadmin@mdw ~]$ gpssh-exkeys -f /home/gpadmin/conf/hostlist

[STEP 1 of 5] create local ID and authorize on local host
  ... /home/gpadmin/.ssh/id_rsa file exists ... key generation skipped


[STEP 2 of 5] keyscan all hosts and update known_hosts file

[STEP 3 of 5] authorize current user on remote hosts
  ... send to sdw1
  ... send to sdw2
  ... send to sdw3


[STEP 4 of 5] determine common authentication file content

[STEP 5 of 5] copy authentication files to all remote hosts
  ... finished key exchange with sdw1
  ... finished key exchange with sdw2
  ... finished key exchange with sdw3

[INFO] completed successfully

 

註意:

(1)首次執行gpssh-exkeys命令時,在[STEP 3 of 5],要輸入每個segment節點的gpadmin用戶的密碼。

(2)gpssh-exkeys命令使用的時候一定要用gpadmin身份,因為這個命令會生成ssh的免密碼登錄的秘鑰,在/home/gpadmin/.ssh這裡。如果以root身份使用gpssh-exkeys命令,那麼生成的.ssh秘鑰在root的home下麵或者是在/home/gpadmin下麵但是是root的所有者,如果之後使用gpadmin身份執行相應操作的時候就沒有許可權。

 

[INFO] completed successfully 這就說明成功打通了,之後就可以使用下麵的命令開啟批量操作,如下:

[gpadmin@mdw ~]$ gpssh -f /home/gpadmin/conf/hostlist
Note: command history unsupported on this machine ...
=> pwd

[sdw1] /home/gpadmin
[sdw3] /home/gpadmin
[sdw2] /home/gpadmin
[ mdw] /home/gpadmin
=> exit

 

這裡pwd命令是linux中的查看路徑命令,這裡也是查看一下批量操作時所處的位置,從中可以看到同時連接到了4個節點。這裡如果/etc/hosts文件中參數只設置了兩個,沒有設置主機名,就只能同時連接2個節點,而且是隨機的。

這裡我們只是測試一下,exit之後先做一些其他的操作。

 

2.6  將安裝包分發到每個子節點

打通之後需要將master中的greenplum安裝包批量複製到各個segment節點上。

[gpadmin@mdw conf]$ cd /opt/greenplum/

打包:

[gpadmin@mdw greenplum]$ tar -cf gp.4.3.tar greenplum-db-4.3.9.1/

 

然後利用gpscp命令將這個文件複製到每一臺機器上:

[gpadmin@mdw greenplum]$ gpscp -f /home/gpadmin/conf/seg_hosts gp.4.3.tar =:/opt/greenplum/

如果沒有意外,就批量複製成功了,可以去子節點的相應文件夾查看,之後要將tar包解壓,我們使用批量操作。

 

[gpadmin@mdw greenplum]$ cd ~/conf/

[gpadmin@mdw conf]$ gpssh -f seg_hosts

Note: command history unsupported on this machine ...

=> cd /opt/greenplum
[sdw3]
[sdw1]
[sdw2]

=> tar -xf gp.4.3.tar
[sdw3]
[sdw1]
[sdw2]

建立軟鏈接

=> ln -s ./greenplum-db-4.3.9.1 greenplum-db
[sdw3]
[sdw1]
[sdw2]
=> ll(可以使用ll查看一下是否已經安裝成功) => exit

 

這樣就完成了所有節點的安裝。

 

3 初始化資料庫

在初始化之前的的幾個步驟都是做一些準備工作。

 

3.1  批量創建Greenplum數據存放目錄

[gpadmin@mdw conf]$ gpssh -f hostlist

=> mkdir gpdata
[sdw3]
[mdw]
[sdw2]
[sdw1]

=> cd gpdata
[sdw3]
[mdw]
[sdw2]
[sdw1]

=> mkdir gpmaster gpdatap1 gpdatap2 gpdatam1 gpdatam2
[sdw3]
[mdw]
[sdw2]
[sdw1]

=> ll

=> exit

 

3.2  配置.bash_profile環境變數(每台機器都要)

編輯.bash_profile文件,添加以下內容:

[gpadmin@mdw ~]$ cd ~
[gpadmin@mdw ~]$ vi .bash_profile

source /opt/greenplum/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1
export PGPORT=5432
export PGDATABASE=testDB

[gpadmin@mdw ~]$ source .bash_profile(讓環境變數生效)

 

註意:PGPORT指的是你安裝greenplum資料庫的埠號。

 

這裡有個問題,Greenplum自己會安裝一個Python包,是2.6.6的。而CentOS6.5本身自帶有一個Python包,是2.6.2的,設置了以上的環境變數了之後,使用yum安裝一些軟體的時候就會出現問題(因為yum是基於Python的),因為系統就發現自己有兩個Python包,他不知道用哪一個了。我還沒有試過更新系統的Python包,需要安裝軟體的時候,我就將環境變數都註釋掉,安裝完之後再讓他生效。

 

3.3  創建初始化配置文件(只需master即可)

[gpadmin@mdw ~]$ vi /home/gpadmin/conf/gpinitsystem_config

ARRAY_NAME="Greenplum"
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1  /home/gpadmin/gpdata/gpdatap2)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster
MASTER_PORT=5432
TRUSTED_SHELL=/usr/bin/ssh
MIRROR_PORT_BASE=43000
REPLICATION_PORT_BASE=34000
MIRROR_REPLICATION_PORT_BASE=44000
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts

 

 

3.4  初始化資料庫(只需master即可)

[gpadmin@mdw ~]$ gpinitsystem -c /home/gpadmin/conf/gpinitsystem_config -s sdw3

其中sdw3是指master的standby所在的節點,我看書上和網上的一些資料都將standby放在最後一個節點,可能是約定俗成的吧。

 

註意:如果上面有一些配置有問題,gpinitsystem就不能成功,日誌在主節點/home/gpadmin/gpAdminLogs/的gpinitsystem_2016XXXX.log文件中。

需要註意的是如果初始化失敗,一定要認真查看這個日誌文件,一味重覆安裝沒有太大意義,重要的是要找到主要原因。

 

4 測試運行安裝的Greenplum資料庫

4.1  啟動和停止資料庫測試是否能正常啟動和關閉

# gpstart
# gpstop

4.2  訪問資料庫

# psql -d postgres

psql (8.2.15)
Type "help" for help.
postgres=#

出現以上界面,恭喜你已經安裝成功了。

輸入查詢語句,查看是否可以執行。

postgres=# select datname,datdba,encoding,datacl from pg_database;

  datname  | datdba | encoding |              datacl             
-----------+--------+----------+----------------------------------
 postgres  |     10 |        6 |
 template1 |     10 |        6 | {=c/gpadmin,gpadmin=CTc/gpadmin}
 template0 |     10 |        6 | {=c/gpadmin,gpadmin=CTc/gpadmin}
(3 rows)
postgres=# \q(退出)

 

5 安裝pgadmin Ⅲ客戶端

安裝pgadmin Ⅲ,使用該客戶端,連接greenplum 4.3資料庫

 

5.1  用戶創建密碼

postgres =# alter role gpadmin with password 'gpadmin';

 

5.2  添加新的客戶端伺服器信息

在master節點的 $MASTER_DATA_DIRECTORY/pg_hba.conf 中添加新的客戶端伺服器信息。master節點的pg_hba.conf配置文件,控制客戶端訪問Greenplum系統。

註意:segment節點也有pg_hba.conf配置文件,它只能控制master節點能否訪問segment,決不能運行客戶端連接。所以不要修改segment的pg_hba.conf文件。

 

格式:

host  database  role  CIDR-address  authentication-method

 

pg_hba.conf中記錄是被順序讀取的,所有記錄的順序是有象徵性意義的。

通常前面的記錄匹配更少的連接但要求較弱的認證,後面的記錄匹配更多的連接但要求更嚴格的認證。

 

例如:允許gpadmin用戶在192.168.0.x網段訪問所有資料庫,使用md5驗證。

# vi $MASTER_DATA_DIRECTORY/pg_hba.conf

host     all         gpadmin         192.168.0.0/24         md5

 

在master重新載入pg_hba.conf文件,需要重啟Greenplum資料庫。

# gpstop –a
# gpstart –a

 

5.3  驗證客戶端能否連接資料庫

# psql -h 192.168.1.171 -p 2345 -d postgres -U gpadmin -W
Password for user gpadmin: 

-h 192.168.1.171 是指定連接master的ip地址

-p 5432 是安裝greenplum資料庫時,設置的埠號,當前資料庫埠號是2345

-u gpadmin 是指定連接的用戶名

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1,MySQL:(structured query language)用於訪問和處理資料庫的標準語言 2,什麼是 SQL? SQL 指結構化查詢語言 SQL 使我們有能力訪問資料庫(資料庫是按照數據結構來組織,存取和管理數據的倉庫) SQL 是一種 ANSI 的標準電腦語言 3,SQL 能做什麼? ...
  • 摘要: 1.閂鎖就像是記憶體上的鎖,隨著越來越多的線程參與進來,他們爭相訪問同一塊記憶體,導致堵塞。2.自旋鎖就是閂鎖,不同之處是如果訪問的記憶體不可用,它將繼續檢查輪詢一段時間。3.拴鎖和自旋鎖是我們無法控制的,由sqlserver自動維護,但是我們應積極尋找避免他們發生堵塞的方法。4。id作為聚集索引 ...
  • 1 瞭解oracle SQL profile如何工作; 2 為什麼需要SQL profile; ...
  • 介紹 上篇文章介紹了MMM架構的實現方法,但是上篇文章的MMM方案的複製是非同步複製,非同步複製的主要問題在於當主從存在延時時如果主機出現了故障導致了主從切換時這時將會存在數據丟失;mysql為瞭解決非同步複製數據丟失的問題增加了半同步複製,半同步複製存在5.5以上的版本,半同步複製的原理是客戶端在事務提 ...
  • 先自我介紹一下,本人某財經大學應屆本科,專業經濟統計,現就職於某打車軟體公司做一名數據分析師。開通博客是因為我認為作為一名半技術人員,還是需要有一個技術博客的,技術博客有利於記錄下最近的工作和學習所得,不會讓自己忙著工作卻不知道自己在忙什麼。 再來說說我對數據分析的理解,數據分析其實範圍很廣,小到提 ...
  • PowerDesigner版本:15.2.0 步驟如下: 1.打開PowerDesigner軟體如下圖: 2.選擇:File->Reverse Engineer->Database... ,如下圖所示: 3.彈出如下圖所示框,設置你的模型(Model Name),根據實際選擇DBMS,我選擇的是My ...
  • 最近用到了 InfluxDB,在此記錄下學習過程,同時也希望能夠幫助到其他學習的同學。 本文主要介紹InfluxDB的功能特點以及influxDB的安裝過程。更多InfluxDB詳細教程請看:InfluxDB系列學習教程目錄 一、InfluxDB 簡介 InfluxDB 是用Go語言編寫的一個開源分 ...
  • select *,if(sva=1,"男","女") as ssva from taname where sva<>"" 12.2. 控制流程函數CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...