自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

輸了:傳統(tǒng)架構(gòu)應(yīng)用快速橫向擴(kuò)容PK容器!

開發(fā) 架構(gòu)
本文通過可視化頁面搭建、no/low code 平臺(tái)、Schema 動(dòng)態(tài)表單等技術(shù)思想來分析講解了如何去設(shè)計(jì)開發(fā)一個(gè)通用的數(shù)據(jù)大屏搭建平臺(tái)。

背景?

當(dāng)監(jiān)控平臺(tái)發(fā)現(xiàn)流量突增,業(yè)務(wù)系統(tǒng)應(yīng)用或鏈路監(jiān)控出現(xiàn)一定范圍的告警,此時(shí)我們查看問題的方向?yàn)椋?/p>

  • APP或網(wǎng)站是否被攻擊了,如DDOS、CC、暴力破解等;
  • 合作推廣帶來的業(yè)務(wù)流量增高,應(yīng)用系統(tǒng)壓力過大;
  • 數(shù)據(jù)庫是否出現(xiàn)因連接數(shù)滿、事務(wù)死鎖導(dǎo)致壓力過大;

以上幾種情況都是我們在處理生產(chǎn)故障過程中比較常見的, 本次我們就應(yīng)用系統(tǒng)壓力過大的場景,需要進(jìn)行橫向擴(kuò)容的方向來講解。

需求?

當(dāng)應(yīng)用系統(tǒng)壓力過大,除了臨時(shí)調(diào)整線程數(shù)或直接橫向擴(kuò)容來解決外,更深入的優(yōu)化代碼以及調(diào)用鏈路上的耗時(shí)接口就更加滯后了。因此我們決定通過應(yīng)用橫向擴(kuò)容來應(yīng)對(duì)系統(tǒng)壓力過大,此時(shí)實(shí)現(xiàn)如何快速擴(kuò)容就成了我們重點(diǎn)關(guān)注的問題。

傳統(tǒng)架構(gòu)下,對(duì)于應(yīng)用橫向擴(kuò)容我們需要做的重點(diǎn)步驟如下:

  • 閑置的服務(wù)器資源;
  • 系統(tǒng)標(biāo)準(zhǔn)化部署步驟(應(yīng)用發(fā)布、標(biāo)準(zhǔn)目錄、配置發(fā)布、應(yīng)用啟動(dòng));
  • 應(yīng)用啟動(dòng)自動(dòng)健康檢查;
  • 應(yīng)用啟動(dòng)后自動(dòng)接入負(fù)載均衡或注冊中心;
  • 應(yīng)用橫向擴(kuò)容后同步到系統(tǒng)監(jiān)控平臺(tái);
  • CMDB資產(chǎn)同步添加到對(duì)應(yīng)業(yè)務(wù)分組;
  • 應(yīng)用服務(wù)器同步至堡壘機(jī);

以上是新的應(yīng)用服務(wù)器上線在運(yùn)維管理過程中流轉(zhuǎn)涉及的各個(gè)主要環(huán)節(jié),除了提前準(zhǔn)備閑置的服務(wù)器資源以節(jié)省不必要的時(shí)間外,其他都是需要根據(jù)我們系統(tǒng)架構(gòu)及運(yùn)維平臺(tái)的實(shí)際情況去適配,我這里只是提供了一個(gè)思路。

假設(shè),一套比較主流的架構(gòu)為:

  • CMDB,基礎(chǔ)設(shè)施統(tǒng)一納管
  • Zabbix監(jiān)控,統(tǒng)一的健康檢查
  • JumpServer堡壘機(jī),服務(wù)器統(tǒng)一登錄管理
  • Spring Cloud 框架
  • Eureka注冊中心
  • Apollo配置中心

解決方案?

在此我們通過??Pipeline支撐運(yùn)維自動(dòng)化??的思想來實(shí)現(xiàn)應(yīng)用橫向擴(kuò)容,以流水線的形式編排不同級(jí)別的原子模塊來實(shí)現(xiàn)不同運(yùn)維場景的功能需求。

圖片

根據(jù)系統(tǒng)架構(gòu),應(yīng)用橫向擴(kuò)容流水線的實(shí)現(xiàn)涉及的功能模塊上圖中已經(jīng)標(biāo)注出來,其中:

  • CMDB+事件推送網(wǎng)關(guān),可通過CMDB對(duì)空閑服務(wù)器資源分配觸發(fā)資產(chǎn)在Zabbix監(jiān)控和堡壘中自動(dòng)同步;
  • 基礎(chǔ)組件安裝,實(shí)現(xiàn)了Java環(huán)境包括標(biāo)準(zhǔn)部署目錄、JDK環(huán)境、管理腳本等內(nèi)容的自動(dòng)配置;
    當(dāng)然我們默認(rèn)空閑服務(wù)器已經(jīng)是按操作系統(tǒng)初始化(配置初始化、標(biāo)準(zhǔn)用戶、等保安全基線)交付的,因此我們在此沒有過多介紹。
  • Apollo配置中心級(jí)原子模塊,實(shí)現(xiàn)應(yīng)用的配置發(fā)布;
  • 系統(tǒng)監(jiān)控級(jí)原子模塊,擴(kuò)容后應(yīng)用的健康檢查同步添加到監(jiān)控平臺(tái);

具體實(shí)現(xiàn)?

1.構(gòu)建?

我們只需輸入應(yīng)用名、新應(yīng)用IP、版本號(hào),就可以實(shí)現(xiàn)應(yīng)用的橫向擴(kuò)容,但是目前只支持逐臺(tái)擴(kuò)容,還不能批量橫向擴(kuò)容。

圖片

2.構(gòu)建結(jié)果?

通過對(duì)流水線的stage的時(shí)間統(tǒng)計(jì),應(yīng)用擴(kuò)容耗主要為版本發(fā)布過程中的啟動(dòng)時(shí)間。

圖片

3.Pipeline?

@Library('shared-library') _
pipeline {
agent any
options {
timestamps()
}
stages {
stage('基礎(chǔ)組件初始化') {
steps {
script {
build job: 'init_system', parameters: [text(name: 'HOST_IP', value: "${HOST}"), string(name: 'PLAYBOOK', value: 'software_install.yml'), string(name: 'TAG', value: 'java,filebeat')]
}
}
}
stage('應(yīng)用初始化') {
steps {
script {
java_deploy.InitApp("${APP_NAME}")
}
}
}
stage('拉取Yunweiconfig配置') {
steps {
script {
java_deploy.PullFromYunweiconfig("${APP_NAME}")
}
}
}
stage('從制品庫拉取包文件') {
steps {
script {
java_deploy.PullFromArtifactory("${APP_NAME}", "${VERSION}")
}
}
}
stage('apollo更新') {
steps {
script {
apollo.ApolloDeploy("${APP_NAME}")
}
}
}
stage('版本發(fā)布') {
steps {
script {
app_port = apollo.ApolloGetPort("${APP_NAME}")
java_deploy.DeployApp("${APP_NAME}", "${VERSION}", "${HOST}")
ip_port = "${HOST}" + ':' + "${app_port}"
//健康檢查
java_deploy.HealthCheck("${ip_port}")
}
}
}
stage('添加zabbix健康檢查 ') {
steps {
script {
app_prot = apollo.ApolloGetPort("${APP_NAME}")
//println("test pass")
println("${app_prot},${HOST}")
ip_port = "${HOST}" + ':' + "${app_prot}"
build job: 'zabbix_newalert', parameters: [string(name: 'APP_NAME', value: "${APP_NAME}"), string(name: 'IP_PORT', value: ""), string(name: 'HTTP_URL', value: "${ip_port}")]
}
}
}
}
}

PK容器?

彈性伸縮相對(duì)于傳統(tǒng)架構(gòu),操作系統(tǒng)CPU、內(nèi)存資源閾值的粒度太粗,無法精確地進(jìn)行適時(shí)擴(kuò)容;另外對(duì)于批量擴(kuò)容,需要提前準(zhǔn)備好資源,相對(duì)于容器的解決方案還是不夠靈活。

啟動(dòng)時(shí)間無論是容器還是傳統(tǒng)架構(gòu),限制快速擴(kuò)容的主要原因在于應(yīng)用的啟動(dòng)時(shí)間,這方面要提前進(jìn)行優(yōu)化。

IP地址分配傳統(tǒng)架構(gòu)無法做到IP地址的自動(dòng)分配,在生產(chǎn)環(huán)境使用DHCP不僅會(huì)導(dǎo)致keepalived切換產(chǎn)生腦裂,還會(huì)因租期問題產(chǎn)生其他問題。而云原生架構(gòu)的可以做到自定義IP池,因此后續(xù)擴(kuò)容會(huì)使用IP池中的地址。

以上幾點(diǎn)是通過本次對(duì)應(yīng)用自動(dòng)橫向擴(kuò)容,與容器使用過程中的幾點(diǎn)對(duì)比,印象比較深刻。

總結(jié)?

本次PK,傳統(tǒng)架構(gòu)雖然輸了,但也并不是一敗涂地。至少讓我發(fā)現(xiàn)只要細(xì)心,堅(jiān)持標(biāo)準(zhǔn)化、原子化、場景化的原則,我們還是有很大空間可以提升的。容器給了我們目標(biāo)和方向,剩下就要看我們自己了

責(zé)任編輯:武曉燕 來源: 木訥大叔愛運(yùn)維
相關(guān)推薦

2010-10-14 09:24:08

Ruby on RaiCakePHP

2009-11-19 13:31:36

UPS擴(kuò)容成本

2011-12-30 21:53:41

應(yīng)用

2011-03-24 13:35:17

應(yīng)用層流控產(chǎn)品網(wǎng)康科技

2013-11-29 13:13:47

路由分布式SDN

2017-09-20 15:28:39

Photon ContvSphere容器

2019-04-16 09:10:12

Java開發(fā)代碼

2023-08-25 15:41:50

容器微服務(wù)

2013-10-25 10:32:27

飛魚星無線云飛魚星路由器飛魚星

2015-11-17 10:37:14

容器在線擴(kuò)容集群管理

2017-04-26 14:53:31

SDS傳統(tǒng)存儲(chǔ)

2014-11-16 16:22:11

大數(shù)據(jù)

2021-03-18 08:46:57

MQ消費(fèi)端擴(kuò)容

2016-09-27 16:19:17

容器

2009-08-24 14:46:42

虛擬化數(shù)據(jù)中心架構(gòu)

2012-12-11 11:02:34

2023-03-05 18:17:21

AI競賽學(xué)術(shù)界

2016-09-27 21:08:14

2012-11-19 16:16:05

TD-LTECDMA網(wǎng)絡(luò)架構(gòu)

2018-03-02 10:19:51

超融合架構(gòu)傳統(tǒng)IT架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)