Nginx 是一個(gè)高性能的HTTP和反向代理web服務(wù)器,因它的穩(wěn)定性、豐富的功能集、簡(jiǎn)單的配置文件和低系統(tǒng)資源的消耗而聞名。Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like 協(xié)議下發(fā)行。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好,中國(guó)大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。Nginx是同類型軟件中應(yīng)用范圍最廣的開(kāi)源類的反向代理服務(wù)器。
Tomcat 服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web 應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP 程序的首選。目前生產(chǎn)中如果不是應(yīng)用于容器和微服務(wù),在同類型web應(yīng)用服務(wù)器中Tomcat是一個(gè)不錯(cuò)的選擇。
Redis是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。
區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value存儲(chǔ)的不足,在部分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。Redis支持主從同步。數(shù)據(jù)可以從主服務(wù)器向任意數(shù)量的從服務(wù)器上同步,從服務(wù)器可以是關(guān)聯(lián)其他從服務(wù)器的主服務(wù)器。Redis還支撐集群。redis-cluster采用無(wú)中心結(jié)構(gòu),每個(gè)節(jié)點(diǎn)都維護(hù)著集群的信息,并且節(jié)點(diǎn)之間互相通信;節(jié)點(diǎn)的 fail 是通過(guò)集群中超過(guò)半數(shù)的節(jié)點(diǎn)檢測(cè)失效時(shí)才生效無(wú)需人為干擾;客戶端與redis節(jié)點(diǎn)直連不需要中間proxy層,client根據(jù)node返回的錯(cuò)誤信息重定向請(qǐng)求;redis-cluster實(shí)現(xiàn)了故障轉(zhuǎn)移、負(fù)載均衡、高可用性、高并發(fā)等功能。
MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一。MySQL所使用的 SQL 語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù)。與其他的大型數(shù)據(jù)庫(kù)例如 Oracle、DB2、SQL Server等相比,MySQL [1] 自有它的不足之處,但是這絲毫也沒(méi)有減少它受歡迎的程度。對(duì)于一般的個(gè)人使用者和中小型企業(yè)來(lái)說(shuō),MySQL提供的功能已經(jīng)綽綽有余,而且由于 MySQL是開(kāi)放源碼軟件,因此可以大大降低總體擁有成本。
Linux作為操作系統(tǒng),Apache 或Nginx作為 Web 服務(wù)器,MySQL 作為數(shù)據(jù)庫(kù),PHP/Perl/Python作為服務(wù)器端腳本解釋器。由于這四個(gè)軟件都是免費(fèi)或開(kāi)放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(除開(kāi)人工成本)就可以建立起一個(gè)穩(wěn)定、免費(fèi)的網(wǎng)站系統(tǒng),被業(yè)界稱為“LAMP“或“LNMP”組合。
RHEL 6.5 / CENTOS 6.5 及以上
開(kāi)源軟件生產(chǎn)安裝要求一般要求最新穩(wěn)定版本,以下安裝版本是目前要求版本,具體如下所示:
Nginx1.20.1、jdk1.8.0_144、Tomcat-8.5.71、keepalive-2.1.0、redis5.0.13、mysql5.7.35
依賴:針對(duì)不同的軟件需要不同的依賴包,具體如下所示:
Nginx:openssl openssl-devel zlib zlib-devel pcre pcre-devel gcc make automake autoconf libtool gcc-c++
Tomcat:主要依賴于jdk環(huán)境
Redis:tcl gcc make
Mysql:無(wú)
Linux下root賬號(hào)安裝:
yum install libaio openssl openssl-devel tcl ssl * gcc* lua zlib zlib-devel pcre pcre-devel-y
每個(gè)環(huán)節(jié)必須要求存在高可用,nginx+keepalived實(shí)現(xiàn)高可用,mysql+keepalived實(shí)現(xiàn)高可用,redis哨兵或集群架構(gòu)實(shí)現(xiàn)高可用。
網(wǎng)絡(luò)1000Mbps及以上
內(nèi)存和cpu針對(duì)不同的軟件建議不同的大小,如下
Nginx:4G2C
Tomcat:8G4C+
Redis:內(nèi)存建議8G及以上,CPU4個(gè)以上
Mysql:內(nèi)存建議8G及以上,CPU4個(gè)以上
關(guān)閉防火墻
systemctl stop firewalld.service 或service iptables stop
禁用防火墻
systemctl disable firewalld.service 或 chkconfig iptables off
安裝依賴包:
yum install gcc* openssl* ssl* -y
解壓keepalived安裝包并進(jìn)去加壓目錄:
./configure --prefix=/data/keepalived/
創(chuàng)建軟連接:
ln-s/data/keepalived/etc/keepalived/
keepalived.conf /etc/keepalived/keepalived.conf
cat /data/keepalived/sbin/check.sh
#!/bin/bash
ps=`ss -anl|grep LISTEN|grep -w 8080|wc -l`
if [$ps -ne 1]; then
pkill keepalived
fi
注:check.sh的權(quán)限必須是700才能調(diào)用執(zhí)行:
chmod 700 /data/keepalived/sbin/check.sh
cat /data/keepalived/etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_script chk_local {
script "/data/keepalived/sbin/check.sh"
interval 3
weight -2
}
vrrp_instance VI_1 {
state BACKUP #slave: state BACKUP
interface eth0
virtual_router_id 51
priority 100 #slave: priority 90
nopreempt #不搶占
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.66
}
track_script {
chk_local
}
}
/data/keepalived/sbin/keepalived -f
/data/keepalived/etc/keepalived/keepalived.conf -S 0
注:nginx和mysql的keepalived高可用安裝配置一樣,只是把監(jiān)聽(tīng)nginx的端口換成監(jiān)聽(tīng)mysql的端口即可。
配置執(zhí)行以下命令
cd /data/nginx-1.12.0
./configure --prefix=/data/nginx
--with-http_realip_module
--with-http_sub_module
--with-http_flv_module
--with-http_dav_module
--with-http_gzip_static_module
--with-http_stub_status_module
--with-http_addition_module
--with-http_ssl_module
編譯
make
安裝
make install
修改配置文件
vi /data/nginx/conf/nginx.conf
a.添加如下代碼:
location /nginx_status {
stub_status on; #開(kāi)啟stub_status監(jiān)控模塊
access_log off; #訪問(wèn)日志不記錄到log中
allow 127.0.0.1; #只允許本機(jī)訪問(wèn)
deny all; # 不允許其他ip地址訪問(wèn)
}
b.到 server 所在代碼段:
include /data/nginx/conf/conf.d/*.conf
c.在http模塊中填下如下代碼:
server_tokens off; #屏蔽nginx的版本號(hào)
修改nginx端口
由于非root用戶只能使用大于1024的的端口,
修改 port :80 為 port :7280
/data/nginx/sbin/nginx -c /data/nginx/conf/nginx.conf
查看啟動(dòng)進(jìn)程 ps -ef| grep nginx
訪問(wèn) http://localhost:7280
訪問(wèn) http://localhost:7280/nginx_status
在http模塊中填下如下代碼:
upstream webserver {
server tomcat1_ip:port;
server tomcat2_ip:port;
server tomcat3_ip:port;
server tomcat4_ip:port;
}
注:該配置為nginx進(jìn)來(lái)的請(qǐng)求輪詢依次分發(fā)到后端各web服務(wù),upstream后端的webserver名字在server模塊中l(wèi)ocaltion代碼段里面添加如下內(nèi)容:
proxy_pass http://webserver。
tar -zxvf jdk-8u144-linux-x64.tar.gz
mv /data/jdk1.8.0_144 /data/jdk
tar -zxvf apache-tomcat-8.5.71.tar.gz
mv /data/apache-tomcat-8.5.71 /data/tomcat
vim .bash_profile
JAVA_HOME=/data/jdk
JAVA_BIN=/data/jdk/bin
PATH=$PATH:$JAVA_BIN
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
source .bash_profile
java -version
vi /data/tomcat/conf/server.xml
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="400" minSpareThreads="200" maxSpareThreads="500"
connectionTimeout="200000" maxHttpHeaderSize="102400" maxPostSize="-1"
redirectPort="8443" URIEncoding="UTF-8" />
<Host name="localhost" appBase="/data/tomcat/webapps"
unpackWARs="true" autoDeploy="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="%h|%{X-FORWARDED-FOR}i|%l|%u|%t|%r|%s|%T|%b|%{Referer}i|%{User-Agent}i" />
vi catalina.sh
JAVA_OPTS="-server -Xmx4g -Xms4g -Xmn256m -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M -Xss256k -
XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -
XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -
XX:+UseFastAccessorMethods -
XX:+UseCMSInitiatingOccupancyOnly -
XX:CMSInitiatingOccupancyFraction=70 -Duser.timezone=GMT+8 -
verbose:gc -Xloggc:$CATALINA_BASE/logs/gc.log -
XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -
XX:+PrintGCDetails"
確認(rèn) /data 目錄其他用戶有寫權(quán)限,確認(rèn)依賴包gcc/tcl/make
安裝包:redis-5.0.13.tar.gz
主備三臺(tái)主機(jī),三臺(tái)主機(jī)單節(jié)點(diǎn)安裝啟動(dòng)方式一模一樣
解壓:tar -xvf redis-5.0.13.tar.gz -C /data
cd /data/redis-5.0.13
make MALLOC=libc
cd src ; make test
cd ../
make install PREFIX=/data/redis
cd ../redis
mkdir data log conf tmp monitor
每臺(tái)主機(jī)需要配置兩個(gè)配置文件分別為7001端口和7002端口,配置要求如下所示:
cat /data/redis/conf/7001.conf
bind 0.0.0.0
protected-mode yes
port 7001
tcp-backlog 511
timeout 0
tcp-keepalive 60
daemonize yes
supervised no
pidfile /data/redis/tmp/redis7001.pid
loglevel verbose
logfile "/data/redis/log/redis.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis/data
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
requirepass d^L8sU_s9
masterauth d^L8sU_s9
maxclients 20000
maxmemory 4G
maxmemory-policy volatile-lru
maxmemory-samples 3
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
aof-rewrite-incremental-fsync yes
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
cluster-replica-validity-factor 0
cluster-require-full-coverage no
hz 100
cat /data/redis/conf/7001.conf配置中只需要把7001改成7002。
三臺(tái)主機(jī)redis都安裝完成后,把3臺(tái)主機(jī)6個(gè)redis都啟動(dòng),啟動(dòng)命令如下:
/data/redis/bin/redis-server /data/redis/conf/7001.conf
/data/redis/bin/redis-server /data/redis/conf/7002.conf
任意一臺(tái)redis主機(jī)上執(zhí)行如下命令:
/data/redis/bin/redis-cli --cluster create ip1:7001 ip1:7002
ip2:7001 ip2:7002 ip3:7001 ip3:7002 --cluster-replicas 1 -a d^L8sU_s9
檢查集群信息:
/data/redis/bin/redis-cli -c -h ip1 -p 7001 -a d^L8sU_s9 cluster info
檢查集群節(jié)點(diǎn)狀態(tài):
/data/redis/bin/redis-cli -c -h ip1 -p 7001 -a d^L8sU_s9 cluster ndoes
檢查單節(jié)點(diǎn)信息:
/data/redis/bin/redis-cli -c -h ip1 -p 7001 -a d^L8sU_s9 info
確認(rèn) /data 目錄其他用戶有寫權(quán)限
安裝包:mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
準(zhǔn)備兩臺(tái)主機(jī)
解壓:tar -xvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /data
進(jìn)入安裝目錄并重命名解壓目錄并進(jìn)入目錄:
cd /data && mv mysql-5.7.35-linux-glibc2.12-x86_64 mysql && cd /data/mysql
創(chuàng)建數(shù)據(jù)及日志等目錄:
mkdir data log
根據(jù)配置文件初始化mysql:
./bin/mysqld --defaults-
file=/data/mysql/conf/my.cnf --initialize-insecure --
user=mysql --innodb_undo_tablespaces=3
Mysql配置文件如下:
cat /data/mysql/conf/my.cnf
[client]
port=3306
socket=/tmp/mysql.sock
default-character-set=utf8
[mysql]
no-auto-rehash
default-character-set=utf8
[mysqld]
socket=/tmp/mysql.sock
basedir=/data/mysql
datadir=/data/mysql/data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
port=3306
character-set-server=utf8
explicit_defaults_for_timestamp=true
lower_case_table_names=1
back_log=200
max_connections=3000
max_connect_errors=100000
table_open_cache=512
external-locking=FALSE
max_allowed_packet=1024M
sort_buffer_size=8M
join_buffer_size=8M
thread_cache_size=51
query_cache_size=32M
#query_cache_limit=4M
transaction_isolation=REPEATABLE-READ
tmp_table_size=96M
max_heap_table_size=96M
skip-name-resolve
###***slowqueryparameters
slow_query_log_file=/data/mysql/log/slow.log
long_query_time=1
slow_query_log = 1
###***binlogparameters
log-bin=/data/mysql/log/mysql-bin
binlog_cache_size=16M
max_binlog_cache_size=128M
max_binlog_size=512M
binlog_format=ROW
expire_logs_days=7
###***MyISAMparameters
key_buffer_size=16M
read_buffer_size=8M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=8M
#***Innodbstorageengineparameters
innodb_buffer_pool_size=4G
innodb_data_file_path=ibdata1:1G:autoextend
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb_thread_concurrency=16
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=16M
innodb_log_file_size=512M
innodb_log_files_in_group=4
innodb_max_dirty_pages_pct=75
innodb_buffer_pool_dump_pct=75
innodb_lock_wait_timeout=50
innodb_file_per_table=on
innodb_undo_tablespaces=3
###***master-slave replication parameters
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=4
slave-parallel-type=LOGICAL_CLOCK
slave-preserve-commit-order=1
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
[mysqldump]
quick
max_allowed_packet=1024M
[myisamchk]
key_buffer=16M
sort_buffer_size=16M
read_buffer=8M
write_buffer=8M
[mysqld_safe]
open-files-limit=8192
log-error=/data/mysql/log/error.log
pid-file=/data/mysql/log/mysqld.pid
啟動(dòng)主從mysql:
/data/mysql/bin/mysqld_safe --defaults-
file=/data/mysql/conf/my.cnf &
主庫(kù)操作:登陸mysql:
/data/mysql/bin/mysql -uroot
mysql>update mysql.user set authentication_string=password(*) where user=root;
mysql>flush privileges;
mysql>grant replication slave on *.* to repl@% identified by ****;
從庫(kù)操作:登陸mysql:
/data/mysql/bin/mysql -uroot
mysql>change master to master_host=主庫(kù)ip,master_user=repl,master_port=3306,master_password=Rep
2018#,master_auto_position=1;
mysql>start slave;
從庫(kù)操作:
mysql>grant replication slave on *.* to repl@% identified
by ****;
主庫(kù)操作:
mysql>change master to master_host=從庫(kù)ip,master_user=repl,master_port=3306,master_password=Rep
2018#,master_auto_position=1;
mysql>start slave;
db1操作:
a. 登陸數(shù)據(jù)庫(kù)
Create database if not exists dbname;
b. 查看db2是否已通過(guò)過(guò)來(lái)dbname。
db2操作:
a. 登陸數(shù)據(jù)庫(kù)
use dbname
create table tablename (id int(11),name varchar(25) );
b. 查看db1是否已同步過(guò)來(lái)tablename。
至此一個(gè)實(shí)現(xiàn)高可用反向代理集群即安裝完成,簡(jiǎn)單的架構(gòu)如上圖所示;
nginx主要實(shí)現(xiàn)高可用反向代理負(fù)載均衡功能;
web服務(wù)多機(jī)主要提高程序的的并發(fā)處理能力及避免單點(diǎn)故障;
redis做緩存數(shù)據(jù)庫(kù)可以緩存不怎么修改的配置信息或序列計(jì)數(shù)等信息提高程序的處理效率;
mysql主從主要就是存儲(chǔ)數(shù)據(jù)并保障主從讀寫分離機(jī)failover自動(dòng)切換避免單點(diǎn)故障。
更多精彩干貨分享
點(diǎn)擊下方名片關(guān)注
IT那活兒
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/129755.html
摘要:開(kāi)源云平臺(tái)中的拼圖玩具對(duì)于云平臺(tái),如今基本就意味著開(kāi)源。明與暗角力開(kāi)源云平臺(tái)中的拼圖玩具為什么會(huì)產(chǎn)生這種混淆正如之前談到由兩大部分組成和的計(jì)算引擎。 開(kāi)源云平臺(tái)中的拼圖玩具?對(duì)于云平臺(tái),如今基本就意味著開(kāi)源。提及開(kāi)源技術(shù),著實(shí)在云計(jì)算和大數(shù)據(jù)下火起來(lái)。面對(duì)撲面而來(lái)的云服務(wù),無(wú)論是何種服務(wù)對(duì)于企業(yè)和用戶來(lái)說(shuō)都是熟悉的陌生人,熟悉是因?yàn)橹涝朴?jì)算的人都能說(shuō)出IaaS、PaaS和SaaS這幾個(gè)詞,...
摘要:月日,國(guó)家會(huì)議中心,由主辦的合稱將強(qiáng)勢(shì)登陸北京這是首次來(lái)華,在這場(chǎng)三合一的開(kāi)源技術(shù)盛會(huì)中,來(lái)自國(guó)內(nèi)外的開(kāi)發(fā)人員架構(gòu)師系統(tǒng)管理員專家商業(yè)領(lǐng)袖等數(shù)千名專業(yè)人士將匯聚一堂。后被收購(gòu),梁勝出任云平臺(tái)首席技術(shù)官,也成為首位華人。 6月19-20日,國(guó)家會(huì)議中心,由The Linux Foundation主辦的LinuxCon + ContainerCon + CloudOpen (合稱LC3) ...
摘要:本文轉(zhuǎn)自劉斌博文如何選擇監(jiān)控方案,文中劉斌從技術(shù)的角度深入解釋了監(jiān)控的數(shù)據(jù)采集原理,介紹了現(xiàn)有開(kāi)源的監(jiān)控方案,以及能夠?qū)M(jìn)行監(jiān)控功能的主流服務(wù)工具。下一章,劉斌將為大家介紹監(jiān)控的開(kāi)原方案,主流服務(wù),及其特點(diǎn)。 過(guò)去的一年中,關(guān)于 Docker 的話題從未斷過(guò),而如今,從嘗試 Docker 到最終決定使用 Docker 的轉(zhuǎn)化率依然在逐步升高,關(guān)于 Docker 的討論更是有增無(wú)減。另一...
摘要:而隨著云計(jì)算成為轉(zhuǎn)型的重要技術(shù)支撐,云計(jì)算開(kāi)源也進(jìn)入了下半場(chǎng)。房秉毅表示,在這個(gè)轉(zhuǎn)型過(guò)程中,云計(jì)算顯然為運(yùn)營(yíng)商的轉(zhuǎn)型和新業(yè)務(wù)發(fā)展提供了極大的機(jī)會(huì)。但在房秉毅看來(lái),從傳統(tǒng)向轉(zhuǎn)型的時(shí)候,尤其在云計(jì)算方面,運(yùn)營(yíng)商擁有兩大獨(dú)特優(yōu)勢(shì)。近年來(lái),在云計(jì)算領(lǐng)域,開(kāi)源技術(shù)呈現(xiàn)爆發(fā)式的增長(zhǎng),像OpenStack、KVM等已經(jīng)成為云計(jì)算領(lǐng)域非常主流的開(kāi)源應(yīng)用。借用云計(jì)算領(lǐng)域的主流看法,這個(gè)過(guò)程就是云計(jì)算開(kāi)源戰(zhàn)場(chǎng)的...
摘要:有部分前端人員使用的是盜版的。非編程相關(guān)其它一些我使用的,但與編程關(guān)系不大的正版工具。尊重別人,更是尊重自己做為一個(gè)程序員,使用正版,我認(rèn)為這不是自做清高的事情,這是對(duì)自己職業(yè)的一種基本尊重。 ...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20