国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Apollo源碼分析(一):Apollo簡(jiǎn)介 & 架構(gòu)演進(jìn)

FrancisSoung / 3340人閱讀

摘要:零為何要學(xué)源碼簡(jiǎn)單,是我現(xiàn)在看起來最簡(jiǎn)單的源碼不會(huì)像封裝了一層又一層,把人繞暈,而沒有那么多封裝,上手快,我們學(xué)習(xí)就應(yīng)該從簡(jiǎn)單的開始憑什么非要去學(xué)封的像粽子一樣的源碼,我們就是要去學(xué)簡(jiǎn)簡(jiǎn)單單,平時(shí)樸素,接地氣的源碼最接近業(yè)務(wù)代碼的源碼。

零 為何要學(xué)apollo源碼

1 簡(jiǎn)單,Apollo是我現(xiàn)在看起來最"簡(jiǎn)單"的源碼
不會(huì)像spring封裝了一層又一層,把人繞暈,而apollo沒有那么多封裝,上手快,我們學(xué)習(xí)就應(yīng)該從簡(jiǎn)單的開始,憑什么非要去學(xué)封的像粽子一樣的spring源碼,我們就是要去學(xué)簡(jiǎn)簡(jiǎn)單單,平時(shí)樸素,接地氣的源碼

2 最接近業(yè)務(wù)代碼的源碼。而且里面有大量的業(yè)務(wù)代碼,而我們其實(shí)平時(shí)寫的最多的就是業(yè)務(wù),它向我們展示了大神是如何來寫業(yè)務(wù)的,如何來配置maven依賴,如何來處理異常,如何來輸入?yún)?shù)判斷

比如它的maven依賴層次結(jié)構(gòu)

它使用不同的異常處理類

它對(duì)DTO,排序等的使用

 @RequestMapping(value = "/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items", method = RequestMethod.GET)
 public List findItems(@PathVariable String appId, @PathVariable String env,
                             @PathVariable String clusterName, @PathVariable String namespaceName,
                             @RequestParam(defaultValue = "lineNum") String orderBy) {

List items = configService.findItems(appId, Env.valueOf(env), clusterName, namespaceName);
if ("lastModifiedTime".equals(orderBy)) {
  Collections.sort(items, (o1, o2) -> {

平凡而接地氣,讓我們有了學(xué)習(xí)的榜樣

當(dāng)然也有比較"高端"的,比如servlet3.0中的DeferredResult用來保持長(zhǎng)連接

@RequestMapping(method = RequestMethod.GET)
public DeferredResult>> pollNotification(

自定義注解

@Import(ApolloConfigRegistrar.class)  //用import注解來載入bean
public @interface EnableApolloConfig {

//用ImportBeanDefinitionRegistrar來注冊(cè)bean
public class ApolloConfigRegistrar implements ImportBeanDefinitionRegistrar {
  @Override
  public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {

學(xué)習(xí)知識(shí)總是從皮毛開始,學(xué)產(chǎn)品也是從產(chǎn)品功能開始,讓我們先來看下apollo的應(yīng)用場(chǎng)景

一 應(yīng)用場(chǎng)景

(載至apollo官方git)

1 傳統(tǒng)開發(fā)

小A是XX團(tuán)隊(duì)主力開發(fā),有一天產(chǎn)品說要上線一個(gè)迪士尼門票內(nèi)購(gòu)功能,由于迪士尼門票很火爆,產(chǎn)品一拍腦袋說,每個(gè)用戶限購(gòu)5張!

代碼如下:

private static final int MAX_QTY_PER_USER = 5; //產(chǎn)品需求限購(gòu)5張
if (qty > MAX_QTY_PER_USER ) {
    throw new IllegalStateException(
        String.format("每個(gè)用戶最多購(gòu)買%d張!", MAX_QTY_PER_USER ));
}

第二天中午,由于內(nèi)購(gòu)實(shí)在太火爆,產(chǎn)品急匆匆的跑過來對(duì)小A說,趕緊改成每人1張!
小A只好放棄了午飯,改代碼、回歸測(cè)試、上線,整整花了1個(gè)小時(shí)才搞定。。。

2 Apollo開發(fā)

小B是YY團(tuán)隊(duì)主力開發(fā),有一天產(chǎn)品說要上線一個(gè)歡樂谷門票搶購(gòu)功能,由于歡樂谷門票很火爆,產(chǎn)品一拍腦袋說,每個(gè)用戶限購(gòu)5張!
小B吸取了小A的教訓(xùn),二話不說把配置寫在了Apollo配置中心

第二天中午,由于內(nèi)購(gòu)實(shí)在太火爆,產(chǎn)品急匆匆的跑過來對(duì)小B說,趕緊改成每人1張!
小B不緊不慢的說:10秒內(nèi)搞定~

二 Apollo功能一覽

配置修改實(shí)時(shí)生效: 配置可以做到準(zhǔn)實(shí)時(shí)生效,再也不用改配置文件重新發(fā)版了

可視化配置管理:配置的后臺(tái)管理系統(tǒng)

權(quán)限管理: 權(quán)限管理、發(fā)布審核、操作審計(jì)

環(huán)境管理: 統(tǒng)一不同環(huán)境、不同集群

版本管理: 版本管理、灰度發(fā)布

三 Apollo核心概念之namespace

公共類型: 應(yīng)用之間共享配置

私有類型:應(yīng)用獨(dú)有的配置

關(guān)聯(lián)類型:應(yīng)用繼承共享配置,并可覆蓋(類似于類的繼承)

四 搭建Apollo服務(wù)

springboot接入非常簡(jiǎn)單,只需在maven里面加個(gè)依賴,然后啟動(dòng)類上加個(gè)@EnableApolloConfig就可以了,然后在配置項(xiàng)上使用@Value注解即可

搭建apollo服務(wù)還是要頗費(fèi)一番功夫的,參考《apollo開發(fā)指南》

五 架構(gòu)演進(jìn)

架構(gòu)V1

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/74799.html

相關(guān)文章

  • 分布式配置系統(tǒng)Apollo如何實(shí)時(shí)更新配置的?

    摘要:我們是不是很好奇配置中心如何做到實(shí)時(shí)更新并且通知到客戶端的這也是一個(gè)面試中經(jīng)常會(huì)問到的題目。客戶端得到狀態(tài)碼是并且會(huì)根據(jù)立即去服務(wù)端拉取最新的配置。引言 記得我們那時(shí)候剛開始學(xué)習(xí)Java的時(shí)候都只是一個(gè)單體項(xiàng)目,項(xiàng)目里面的配置基本都是寫在項(xiàng)目里面的properties文件中,比如數(shù)據(jù)庫(kù)配置啥的,各種邏輯開關(guān),一旦這些配置修改了,還需要重啟項(xiàng)目這修改才會(huì)生效。隨著各種微服務(wù)的誕生,服務(wù)的...

    NicolasHe 評(píng)論0 收藏0
  • 攜程面:分布式配置系統(tǒng)Apollo如何實(shí)時(shí)更新配置的?

    摘要:我們是不是很好奇配置中心如何做到實(shí)時(shí)更新并且通知到客戶端的這也是一個(gè)面試中經(jīng)常會(huì)問到的題目。雖然是攜程開源的,但是攜程內(nèi)部也不用它。客戶端得到狀態(tài)碼是并且會(huì)根據(jù)立即去服務(wù)端拉取最新的配置。通過定時(shí)任務(wù)的補(bǔ)充,可以讓配置達(dá)到最終的一致性。 引言記得我們那時(shí)候剛開始學(xué)習(xí)Java的時(shí)候都只是一個(gè)單體項(xiàng)目,項(xiàng)目里面的配...

    asce1885 評(píng)論0 收藏0
  • Apollo:微服務(wù)架構(gòu)下的配置管理

    摘要:比如使用的時(shí)候指定使用哪個(gè)環(huán)境的配置在微服務(wù)架構(gòu)下,服務(wù)的數(shù)量會(huì)比之前的單體應(yīng)用多,部署的節(jié)點(diǎn)數(shù)量也會(huì)很多。今天主要是講下在中如何對(duì)接進(jìn)行配置管理。 問題背景 在實(shí)際工作中,我們的開發(fā)環(huán)境,測(cè)試環(huán)境,生產(chǎn)環(huán)境對(duì)應(yīng)的 Mysql 數(shù)據(jù)庫(kù),Redis 這些信息都不一樣,每個(gè)環(huán)境都有對(duì)應(yīng)的一套配置,在 Spring Boot 中我們通常會(huì)編寫多個(gè)配置文件,也就是每個(gè)環(huán)境一個(gè)配置文件。 比如:...

    cloud 評(píng)論0 收藏0
  • Apollo源碼分析(二): Apollo的代碼層次

    摘要:不同與其它中間件框架,中有大量的業(yè)務(wù)代碼,它向我們展示了大神是如何寫業(yè)務(wù)代碼的依賴的層次結(jié)構(gòu),如何進(jìn)行基礎(chǔ)包配置,以及工具類編寫,可以稱之為之最佳實(shí)踐。代碼參考視圖解析器,這里的配置指的是不檢查頭,而且默認(rèn)請(qǐng)求為格式。 不同與其它中間件框架,Apollo中有大量的業(yè)務(wù)代碼,它向我們展示了大神是如何寫業(yè)務(wù)代碼的:maven依賴的層次結(jié)構(gòu),如何進(jìn)行基礎(chǔ)包配置,以及工具類編寫,可以稱之為sp...

    cyqian 評(píng)論0 收藏0
  • 21 分鐘學(xué) apollo-client 系列:請(qǐng)求攔截和 FragmentMatcher

    摘要:分鐘學(xué)是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。接管了請(qǐng)求和狀態(tài)管理。一般在生產(chǎn)環(huán)境中,我們通常還希望做權(quán)限驗(yàn)證請(qǐng)求攔截等事務(wù)處理。 21 分鐘學(xué) apollo-client 是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。 搭建 Apollo client 端,集成 redux使用 apollo-client 來獲取數(shù)據(jù)修改本地的 apollo store 數(shù)據(jù)提供定制方案 請(qǐng)求攔截 封裝修改 clie...

    Eastboat 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

FrancisSoung

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<