成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你的應(yīng)用有開關(guān)嗎?

開發(fā) 開發(fā)工具
你的應(yīng)用有開關(guān)嗎?能不能像燈的開關(guān)一樣,在需要時打開,在不需要時關(guān)閉呢,像USB一樣,即插即用呢?

「啪」天色暗下來時,房間里的燈打開了。

「啪」,睡覺時,房間里的燈又關(guān)上了。

有個開關(guān)可真方便。

[[220644]]

「你的應(yīng)用有開關(guān)嗎?為啥不給我加個開關(guān)?」,你的應(yīng)用高叫著,并且在不經(jīng)意的時候,給你來一個突然襲擊。

你的應(yīng)用有開關(guān)嗎?能不能像燈的開關(guān)一樣,在需要時打開,在不需要時關(guān)閉呢,像USB一樣,即插即用呢?

答案當然是一定的,甚至在一些講應(yīng)用開發(fā)、設(shè)計原則的書籍中,都會將應(yīng)用是否飲食「回退」功能做為很重要的一項。這里所謂的回退,和我們所說的開關(guān)類似,都需要在必要的時候?qū)⒐δ芡嘶氐缴壡啊?/p>

假設(shè)在周五下班前,你把這一周新開發(fā)的功能推到線上,開開心心的合上電腦,去健身了。

健身時腦海里還計劃著周末要怎樣happy,想著這些,笑意掛上了嘴角。這時,手機響了。掛斷幾次還堅持打進來。一聽,是接到客戶反饋,線上應(yīng)用出了問題,新開發(fā)的功能影響了其他東西。這該如何時候,只能收拾東西,加班分析新的代碼,找尋修復(fù)的方式,再加新代碼上線,解決這個問題。

如果有「回退」功能,此時你就可以回退到你上線前,然后仔細檢查,不需要急于一時。

如果有開關(guān),你就可以將新的功能「關(guān)」掉,然后線上繼續(xù)跑,不影響其他功能分毫,分分鐘解決問題。

怎么關(guān)呢?

我們都知道 Java 的 class 在類加載器中加載一次,所以如果在線上出現(xiàn)問題需要處理時,就需要停服更新 class 來升級應(yīng)用。雖然像我們之前提到的一些方法,也可以實現(xiàn)熱加載,但生產(chǎn)環(huán)境里較少使用。

除了修改class文件外,我們還可以在代碼里編寫各種 If/else來進行開關(guān)判斷,這個時候如果需要關(guān)閉功能是,停服更新的不再是class,而是配置信息。

我們在應(yīng)用的頁面里大概都寫過類似符合某種條件展示xxx內(nèi)容之類的判斷,例如JSP、FreeMarker 之類的在通過一些條件標簽來進行頁面的渲染進行控制。

在前后端分離,API開發(fā)的時候,如何進行這些返回結(jié)果的控制呢? 這不簡單嘛, if / else 一把梭。

但有些時候,比如需要進行A/B Test, 需要根據(jù)Alpha、Beta 階段進行用戶控制,甚至是線上產(chǎn)生了問題,需要把新上的一個feature停掉... 等等這一系列

問題,如果硬編碼到系統(tǒng)里,每次規(guī)則發(fā)生變更時,都需要修改代碼,部署上線,不夠靈活。

同時,對于A/B Test 這種想要快速實驗的場景,也不夠及時。

為了就對類似上述的場景, Matrin Flower 提出了一個 「Feature Toggle」的概念,對,就是那個提出DI 概念的哥們。(不要吐槽老M 的概念為啥這么多:))。

The basic idea is to have a configuration file that defines a bunch of toggles for various features you have pending. The running application then uses these toggles in order to decide whether or not to show the new feature.

這里的Toggle就是個開關(guān),針對feature 的開關(guān),決定在什么時候開啟什么feature。

針對 feature,除了可以像上面解決線上臨時問題時進行開關(guān)外,也可以進行訪問權(quán)限控制,對于特定群組的用戶提供某些功能,同時也可以用于實現(xiàn)快速的 A/B Test 的目的,來驗證產(chǎn)品的猜想。

關(guān)于 feature toggle,各種語言有不同的實現(xiàn),具體請參見這里:

http://featureflags.io/resources/

在Java中,較常用的是 Togglz。

Togglz 的使用類似這樣:

  1. if (MyFeatures.HOT_NEW_FEATURE.isActive()) { 
  2.   // 新特性寫這里 

你說這不就和我自己寫if/else嗎? 當然不是啦。這個實現(xiàn)將用戶獲取,開關(guān)狀態(tài)獲取都進行了抽象,可以進行自己的Configuration實現(xiàn),

  1. public class MyTogglzConfiguration implements TogglzConfig { 
  2.  
  3.     public Class<? extends Feature> getFeatureClass() { 
  4.         return MyFeatures.class; 
  5.     } 
  6.  
  7.     public StateRepository getStateRepository() { 
  8.         return new FileBasedStateRepository(new File("/tmp/features.properties")); 
  9.     } 
  10.  
  11.     public UserProvider getUserProvider() { 
  12.         return new ServletUserProvider(); 
  13.     }} 

然后具體的開關(guān)的狀態(tài)就在stateRepository中進行了定義,可以放在內(nèi)存中,文件中,數(shù)據(jù)庫中等等。此時可以再搭配上配置中心等,來實現(xiàn)應(yīng)用功能的動態(tài)開關(guān),不影響你周末時光。

【本文為51CTO專欄作者“侯樹成”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號『Tomcat那些事兒』獲取授權(quán)】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2010-12-21 11:31:09

2012-11-22 11:35:15

打印機

2023-11-28 08:38:25

API接口開關(guān)

2021-09-26 09:22:59

遞歸代碼二叉樹

2018-07-12 15:01:07

2013-07-19 15:31:20

移動應(yīng)用僵尸

2023-12-08 08:29:53

SpringAOP日志

2019-02-23 15:00:43

2019-02-21 16:36:16

云服務(wù)器云計算服務(wù)器

2011-03-24 09:22:23

Solaris 11兼容性

2021-07-12 07:59:05

對象接口編程

2024-09-29 09:16:30

2020-12-21 14:42:42

大數(shù)據(jù)云計算人工智能

2021-03-14 15:05:22

大數(shù)據(jù)程序員游戲

2023-04-26 10:21:04

2018-08-29 18:53:44

2023-10-16 23:12:02

Redis數(shù)據(jù)結(jié)構(gòu)

2022-02-23 15:33:19

前端框架開發(fā)Web

2020-07-14 07:48:19

Java對象JVM

2022-01-05 12:03:48

MySQL索引數(shù)據(jù)
點贊
收藏

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

主站蜘蛛池模板: 天天久久 | 欧美在线 | 一区二区三区视频在线免费观看 | 欧美一级特黄aaa大片在线观看 | 在线免费观看视频你懂的 | 亚洲精品一区二区三区中文字幕 | 成人三级视频 | 亚洲国产成人精品久久 | 在线免费观看黄色网址 | 国产精品美女久久久久aⅴ国产馆 | 欧美日韩亚洲国产综合 | 亚洲 中文 欧美 日韩 在线观看 | 伊人网综合 | 美女国内精品自产拍在线播放 | 2022国产精品| 国产精品免费大片 | 国产精品99久久免费观看 | 国产高清免费 | 亚洲精选一区二区 | 一区二区三区四区在线视频 | 亚洲bt 欧美bt 日本bt | 欧美 视频| 日本欧美视频 | 亚洲成人午夜在线 | 在线欧美亚洲 | 国产成人一区二区三区久久久 | www.性色| 国产午夜精品久久久 | 欧美在线一区二区三区 | 中文字幕一区二区三区乱码在线 | 国产视频2021| 香蕉久久久 | 亚洲精品乱码久久久久久按摩观 | 日本三级电影在线看 | 色吊丝2288sds中文字幕 | 久久久久久久久91 | 色视频在线播放 | 夜夜撸av | 99国产视频| 精品少妇一区二区三区日产乱码 | 日韩资源 |