主頁 > 軟體工程 > 配置中心-Apollo

配置中心-Apollo

2020-09-11 20:20:09 軟體工程

配置中心-Apollo

2019/10/01 Chenxin

配置服務主要有 攜程Apollo、百度Disconf、阿里ACM,目前以Apollo用戶量最大.適用場景,多用于微服務,與K8S結合好.

攜程Apollo
https://github.com/ctripcorp/apollo
Apollo - A reliable configuration management system.
Apollo(阿波羅)是攜程框架部門研發的分布式配置中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,并且具備規范的權限、流程治理等特性,適用于微服務配置管理場景,服務端基于Spring Boot和Spring Cloud開發,打包后可以直接運行,不需要額外安裝Tomcat等應用容器,
Java客戶端不依賴任何框架,能夠運行于所有Java運行時環境,同時對Spring/Spring Boot環境也有較好的支持,
.Net客戶端不依賴任何框架,能夠運行于所有.Net運行時環境,

百度Disconf
https://github.com/knightliao/disconf
Disconf - Distributed Configuration Management Platform(分布式配置管理平臺).
百度disconf是一套完整的基于zookeeper的分布式配置統一解決方案,一個分布式環境中,同型別的服務往往會部署很多實體,這些實體使用了一些配置,為了更好地維護這些配置就產生了配置管理服務,通過這個服務可以輕松地管理成千上百個服務實體的配置問題,專注于各種「分布式系統配置管理」的「通用組件」和「通用平臺」, 提供統一的「配置管理服務」.
主要目標
部署極其簡單:同一個上線包,無須改動配置,即可在 多個環境中(RD/QA/PRODUCTION) 上線.
部署動態化:更改配置,無需重新打包或重啟,即可 實時生效.
統一管理:提供web平臺,統一管理 多個環境(RD/QA/PRODUCTION)、多個產品 的所有配置.
核心目標:一個jar包,到處運行.

阿里ACM
https://help.aliyun.com/product/59604.html?spm=a2c4g.11186623.6.540.29a137332X3Muy 阿里云檔案(ACM檔案)
應用配置管理 ACM 是一款在分布式架構環境中對應用配置進行集中管理和推送的產品,
利用 ACM,您可以在微服務、DevOps、大資料等場景下極大減輕配置管理的作業量,并增強配置管理的服務能力,
應用配置管理 ACM(Application Configuration Management)前身為淘寶內部配置中心 Diamond,現已作為 Nacos 的配置中心模塊開源,
應用場景:在應用生命周期管理中,開發人員通常會將應用中需要變更的一些配置項或者元資料從代碼中分離出來,放在單獨的組態檔中管理,這些單獨管理的內容就稱為應用配置,這種分離應用配置的方法是管理應用變更的常見手段之一,發布應用后,運維人員或最終用戶可以通過調整配置來適配環境,或調整應用程式的運行行為,
ACM 是面向分布式系統的配置中心,憑借配置變更、配置推送、歷史版本管理、灰度發布、配置變更審計等配置管理工具,ACM 能幫助您集中管理所有應用環境中的配置,降低分布式系統中管理配置的成本,并降低因錯誤的配置變更帶來可用性下降甚至發生故障的風險,

比較
目前大多認為 Apollo優于Disconf優于ACM.

Apollo

參考
https://github.com/ctripcorp/apollo

架構說明

參考: https://github.com/ctripcorp/apollo/wiki/Apollo配置中心介紹

架構圖: 略.
Apollo的總體設計,我們可以從下往上看:

Config Service提供配置的讀取、推送等功能,服務物件是Apollo客戶端
Admin Service提供配置的修改、發布等功能,服務物件是Apollo Portal(管理界面)
Config Service和Admin Service都是多實體、無狀態部署,所以需要將自己注冊到Eureka中并保持心跳
在Eureka之上我們架了一層Meta Server用于封裝Eureka的服務發現介面
Client通過域名訪問Meta Server獲取Config Service服務串列(IP+Port),而后直接通過IP+Port訪問服務,同時在Client側會做load balance、錯誤重試
Portal通過域名訪問Meta Server獲取Admin Service服務串列(IP+Port),而后直接通過IP+Port訪問服務,同時在Portal側會做load balance、錯誤重試
為了簡化部署,我們實際上會把Config Service、Eureka和Meta Server三個邏輯角色部署在同一個JVM行程中

基本概念決議

參考:
https://github.com/ctripcorp/apollo/wiki/Apollo使用指南
https://github.com/ctripcorp/apollo/wiki/Apollo核心概念之"namespace"
https://github.com/ctripcorp/apollo/wiki/Apollo配置中心介紹

application (應用)
這個很好理解,就是實際使用配置的應用,Apollo客戶端在運行時需要知道當前應用是誰,從而可以去獲取對應的配置
每個應用都需要有唯一的身份標識 -- appId,我們認為應用身份是跟著代碼走的,所以需要在代碼中配置,具體資訊請參見Java客戶端使用指南,

environment (環境)
配置對應的環境,Apollo客戶端在運行時需要知道當前應用處于哪個環境,從而可以去獲取應用的配置
我們認為環境和代碼無關,同一份代碼部署在不同的環境就應該能夠獲取到不同環境的配置
所以環境默認是通過讀取機器上的配置(server.properties中的env屬性)指定的,不過為了開發方便,我們也支持運行時通過System Property等指定,具體資訊請參見Java客戶端使用指南,

集群
通過添加集群,可以使同一份程式在不同的集群(如不同的資料中心)使用不同的配置
如果不同集群使用一樣的配置,則沒有必要創建集群
Apollo默認會讀取機器上/opt/settings/server.properties檔案中的idc屬性作為集群名字, 如SHAJQ(金橋資料中心)、SHAOY(歐陽資料中心)
在Portal的專案內,創建的集群名字需要和機器上server.properties中的idc屬性一致.(這里指的應該是部署應用程式所在的機器吧?)

Namespace
一個應用下不同配置的分組,可以簡單地把namespace類比為檔案,不同型別的配置存放在不同的檔案中,如資料庫組態檔,RPC組態檔,應用自身的組態檔等
應用可以直接讀取到公共組件的配置namespace,如DAL,RPC等
應用也可以通過繼承公共組件的配置namespace來對公共組件的配置做調整,如DAL的初始資料庫連接數

灰度
A,B,C客戶端機器.
配置項 timeout=20.
灰度為A機器保持默認主版本引數timeout=20,B,C機器為timeout=30.
運行一段時間,觀察效果,再逐步將所有機器發布30.

安裝與部署

參考
https://github.com/ctripcorp/apollo/wiki/分布式部署指南 分布式部署指南

機器配置說明(規劃配置)
portal 192.168.143.130 portal+portalDB
dev 192.168.143.131 config+admin+configDB
pro 192.168.143.132 config+admin+configDB

JDK安裝
cd /opt;
wget http://13.251.64.203:18081/jdk-8u181-linux-x64.tar.gz
tar xzvf jdk-8u181-linux-x64.tar.gz
mv /opt/jdk1.8.0_181 /usr/local/jvm

修改/etc/profile檔案,添加:
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/jvm
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.??{JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
EOF

source /etc/profile
echo $PATH #確保/usr/local/jvm/bin排在首位
java -version

mysql安裝
請參考mysql檔案.建議安裝 mysql-5.7.27版本.

DB設定.

CREATE USER 'apollo'@'localhost' IDENTIFIED BY 'sj...8sg';
CREATE USER 'apollo'@'%' IDENTIFIED BY 'sj...8sg';

# 只設定1臺potal(130)
create database apolloportaldb;
GRANT ALL PRIVILEGES ON apolloportaldb.* TO 'apollo'@'%';
GRANT ALL PRIVILEGES ON apolloportaldb.* TO 'apollo'@localhost;

# 1臺DEV 與 1臺PRO 均設定(131,132)
create database apolloconfigdb;
GRANT ALL PRIVILEGES ON apolloconfigdb.* TO 'apollo'@'%';
GRANT ALL PRIVILEGES ON apolloconfigdb.* TO 'apollo'@localhost;

mysql的sql檔案匯入,請參考后面git克隆代碼部分.

github克隆代碼(目的主要為獲取sql表資料,另外也可以自行編譯Apollo)
在portal,config+admin機器/opt/目錄分別執行
git clone https://github.com/ctripcorp/apollo.git

拉取的代碼里,包含sql檔案,如下
/opt/apollo-all-code-git/scripts/db/migration/

[root@localhost migration]# tree
.
├── configdb
│   └── V1.0.0__initialization.sql  #config的sql匯入檔案(供config和admin服務)
├── flyway-configdb.properties
├── flyway-portaldb.properties
└── portaldb
    └── V1.0.0__initialization.sql  #portal的sql匯入檔案(供portal服務)

將以上2個sql分別匯入到1臺portal-DB和 2臺config-DB里.

采用直接下載打包好的檔案解壓
下載路徑(從GitHub的md檔案,即Apollo檔案中得到)
https://github.com/ctripcorp/apollo/releases/
獲取對應的portal.zip,admin.zip,config.zip檔案,解壓,可以放到/opt/目錄.其他目錄也可以.默認日志檔案會被丟到/opt/目錄(組態檔里默認指定,可以修改).

檔案/資料結構與組態檔決議/啟停

檔案說明
以portal為例

[root@localhost apollo-portal]# pwd
/opt/apollo-portal

[root@localhost apollo-portal]# tree
.
├── apollo-portal-1.4.0.jar
├── apollo-portal-1.4.0-sources.jar
├── apollo-portal.conf  #參考下文
├── apollo-portal.jar
├── config #參考下文
│   ├── apollo-env.properties
│   ├── application-github.properties
│   └── app.properties
└── scripts
    ├── shutdown.sh
    └── startup.sh

組態檔
安裝portal,config,admin可以直接下載安裝包方式.或者下載原始碼自行編譯方式(編譯主要適用于二次開發),這里未做嘗試,如需要的話,建議使用阿里的maven庫比較快.

配置專案有一部分是放在DB的表里的.

1.組態檔

protal組態檔

[root@localhost apollo-portal]# pwd
/opt/apollo-portal

[root@localhost apollo-portal]# cat apollo-portal.conf  (默認,無需修改)
MODE=service
PID_FOLDER=.
LOG_FOLDER=/opt/logs/100003173/

[root@localhost apollo-portal]# cat config/apollo-env.properties (2個環境,默認是多個被注釋的)指定Eureka的地址
dev.meta=http://192.168.143.131:8080
pro.meta=http://192.168.143.132:8080

[root@localhost apollo-portal]# cat config/application-github.properties  (Portal訪問自己DB的配置)
# DataSource
spring.datasource.url = jdbc:mysql://127.0.0.1:10306/ApolloPortalDB?characterEncoding=utf8 #這里DB在本地,所以為127地址.
spring.datasource.username = apollo
spring.datasource.password = sj...8sg

[root@localhost apollo-portal]# cat config/app.properties 默認(appId資訊,為portal行程資訊,日志是按照此id分類存盤的.config為100003171,admin為100003172)
appId=100003173
jdkVersion=1.8

config組態檔

[root@localhost apollo-config]# pwd
/opt/apollo/apollo-config
[root@localhost apollo-config]# cat apollo-configservice.conf 保持默認
MODE=service
PID_FOLDER=.
LOG_FOLDER=/opt/logs/100003171/

[root@localhost config]# cat config/application-github.properties 需要修改,指定自己configDB地址
# DataSource
spring.datasource.url = jdbc:mysql://127.0.0.1:10306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = apollo
spring.datasource.password = sj...8sg

[root@localhost config]# cat config/app.properties 保持默認
appId=100003171
jdkVersion=1.8

admin組態檔
略,同config服務的配置.

2.調整服務端配置
Apollo自身的一些配置是放在資料庫里面的,所以需要針對實際情況做一些調整,
以下配置除了支持在資料庫中配置以外,也支持通過-D引數、application.properties等配置,且-D引數、application.properties等優先級高于資料庫中的配置.
這里以修改DB表欄位為例,來調整服務器配置.

2.1調整ApolloPortalDB配置(Portal)
配置項統一存盤在ApolloPortalDB.ServerConfig表中,也可以通過管理員工具 - 系統引數頁面進行配置,無特殊說明則修改完一分鐘實時生效,
apollo.portal.envs欄位(可支持的環境串列),默認值是dev,如果portal需要管理多個環境的話,以逗號分隔即可(大小寫不敏感),如:
DEV,FAT,UAT,PRO (ApolloPortalDB.ServerConfig表欄位,本實驗設定為 dev,pro)

2.2調整ApolloConfigDB配置(config)
配置項統一存盤在ApolloConfigDB.ServerConfig表中,需要注意每個環境的ApolloConfigDB.ServerConfig都需要單獨配置,修改完一分鐘實時生效,
eureka.service.url欄位(Eureka服務Url).
這里dev和pro分別有1臺,所以只需要添加本機(默認已有,為http://localhost:8080/eureka/).pro也只有1臺,也一樣.

啟停
啟動順序
config(8080) -> admin(8090) -> portal(8070)
啟停腳本路徑(類似)
/opt/apollo-portal/scripts/startup.sh
/opt/apollo-portal/scripts/shutdown.sh

頁面與服務說明
登陸Portal:
http://192.168.143.130:8070/
默認用戶名 apollo,密碼 admin

登陸Eureka(優瑞卡)(無用戶名密碼,由config提供的服務):
http://192.168.143.131:8080/
http://192.168.143.132:8080/

訪問admin,類似
http://192.168.143.131:8090/ 頁面顯示 "apollo-adminservice"字符
http://192.168.143.132:8090/

Portal操作說明,使用指南

參考 https://github.com/ctripcorp/apollo/wiki/Apollo使用指南

創建專案
創建用戶
修改系統引數(會修改DB),比如增加部門名稱.
對不同環境,DEV,PRO分別新增配置,并發布,或回滾.
添加集群
添加NameSpace

客戶端

請參考應用程式接入部分.
思考,客戶端更新是否成功,如何判斷?需要手動寫Java程式給出介面嗎?還是說Portal有對應的監控項?(好像沒有).-> 可以通過應用程式機器本地的快取配置目錄中查看.另外,客戶端配置資訊監控,可以在界面上方便地看到配置在被哪些實體(IP)使用

應用程式接入

參考 https://github.com/ctripcorp/apollo/wiki/Java客戶端使用指南
支持 Java, .net, 其他語言(第三方提供的Go,Python等)

Java接入
1.pom.xml參考插件
pom.xml里apollo的參考

2.指定讀取哪個Eureka機器里的資料
配置DEV還是PRO環境,有多種方式.建議服務器方式配置(開發機很少會變成生產).在開發機的 /opt/setting/server.properties,內容
apollo.meta=http://192.168.143.131:8080/ 如果是多個機器(高可用),后面跟","隔開.從此Eureka里讀取應用程式(如test,或app-id-01)的配置資訊.

3.指定讀取哪個應用程式配置
apollo內專案的appid為test.那么需要錄入到自身Java程式的 src->main->resource->META-INF->app.properties里: app.id=test (從Eureka里讀取應用程式test的配置資訊)

4.Java代碼呼叫和驗證
寫java代碼來呼叫apollo的配置資訊,并自定義頁面,檢查是否成功.

其他語言
請參考官方檔案說明(目前有用戶提供了對應的python,nodejs,php,go等方式),或者使用http的api方式,具體說明參考官網檔案.

快取組態檔
客戶端獲取組態檔后,會寫一份快取的物理檔案,放在本地.
所以應用程式,比如java或.net需要具有此目錄的讀寫權限.
這個目錄也可以在啟動應用程式的時候指定,如-Dapollo.cacheDir=/opt/data/some-cache-dir
本地配置目錄默認位于:
Mac/Linux: /opt/data/{appId}/config-cache

虛擬化部署

Docker,K8S的部署方式,請參考官方檔案說明->分布式部署>-Docker,k8s.

用戶與授權

參考 https://github.com/ctripcorp/apollo/wiki/Portal-實作用戶登錄功能 用戶登錄(LDAP,SSO)
LDAP接入

備份與恢復

資料庫+組態檔

高可用

當前3臺,分別為1臺protal,1臺dev,1臺pro.現將pro也改為dev,以便模擬dev環境的高可用(2臺).即實作Eureka的互備.
注意:這里,目的是config和admin服務高可用,DB仍為單點.protal的DB在130,config和admin的DB在131.

修改
1.130機器protal的DB表serverconfig欄位apollo.portal.envs
值dev,pro->dev

2.131機器config的DB標serverconfig欄位eureka.service.url
值http://localhost.../->http://192.168.143.131:8080/eureka/,http://192.168.143.132:8080/eureka/

3.130機器portal的組態檔
cat /opt/apollo-portal/config/apollo-env.properties
dev.meta=http://192.168.143.131:8080
pro.meta=http://192.168.143.132:8080
修改為
dev.meta=http://192.168.143.131:8080,http://192.168.143.132:8080

4.131和132上config和admin組態檔修改,資料庫全部指向131機器
cat /opt/apollo/apollo-config/config/application-github.properties
spring.datasource.url = jdbc:mysql://192.168.143.131:10306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = apollo
spring.datasource.password = xxx

確認
啟動服務后,就只剩DEV環境了.

安全

Protal訪問后端的Eureka,并沒有任何認證程序.那么,誰都可以通過http api方式,往config里注入資料.安全隱患.
故此不能開放給外網.

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

標籤:其他

上一篇:代理(Proxy)設計模式

下一篇:軟體開發工具(第5章:軟體開發工具的使用與開發)

標籤雲
其他(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)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more