新車新規定,台、日分別推出電動車輛相關新法規

電動車輛日益興盛,意味著相關的交通法規也需進行修訂。日本與台灣近日分別針對電動車與電動機車、自行車提出新的法令規章,主要的目的是保護用路人安全。

日本:電動車需有警示音

日本國土交通省於2月1日宣布新法規,要求電動車、混和動力汽車、燃料電池車等行駛聲音較小的電動車輛在生產階段就需安裝車輛接近告知裝置,以避免行人沒有注意到車輛靠近而造成交通事故。告知裝置的音量將採用聯合國即將於三月公布的標準。2018年上路的汽車就須加裝相關設備。

為強化新法規的強制性,日本也將修改道路運輸安全標準,未符合告知裝置音量標準的車輛,將無法在日本國內出售。

台灣:電動自行車需配戴安全帽

而向來以機車與自行車為電動車輛主流的台灣,也針對愈來愈普及的電動自行車提出新規定。交通部指出,未來電動自行車騎士比照電動機車與一般機車,必須配戴合格安全帽;未配合規定者將課處新台幣300~600元的罰金。今年7月1日起開始勸導,預計最快在明年正式開罰。

目前台灣有18萬輛領牌的電動自行車,車速規定限於25km/hr以下,但經調整後時速往往可來到30~40km/hr,危險性增加。加上電動自行車不受一般機車與電動機車法規限制,且不須駕照就能騎乘,交通部認為有管制漏洞,已著手修正道路交通安全規則,並預計在7月1日起勸導電動自行車騎士佩戴安全帽。

此外,交通部也將針對改車問題修正「電動輔助自行車及電動自行車形式安全審驗管理辦法」,明文規定禁止改變速率控制器,將速度限制在25km/hr以內。同時,電動自行車之車款外裝、功能、尺寸等,也將制定標準並發給合格標章,供合格車款張貼;7月1日起,未貼合格標章的電動自行車不可上路,舊車則將鼓勵申請更換新標章。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

南投搬家前需注意的眉眉角角,別等搬了再說!

產品標示碳足跡、限制肉類消費好不好? 英辦氣候公民大會徵詢民眾意見

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?

程序員修神之路–有狀態的服務其實可以做更多的事情

菜菜哥,你換形象啦?


這麼巧,你也換啦!聽說是不會畫畫的菜嫂經過九牛二虎之力的功勞哦!鼓掌……


前幾天我出去面試了,面試官問我微服務的知識,我回答的可好了


看來微服務你真的下功夫研究了呀


是呀是呀,但是碰到一個問題,有狀態的服務是什麼意思呢?


看來你又掛在這個問題上了,且聽這次分解


簡介

對於初學者,心裏對“有狀態服務”的理解可能比較模糊,但是從面向對象編程思想的角度去理解也許會明朗很多。面向對象編程思想提倡的是用編程語言去描述世間萬物,所以面向對象編程的語言都會提供描述對象的容器以及對象行為的表達方式。舉一個很簡單的栗子,在c#或者java中,表達對象的容器就是class,對象的行為通過一系列的接口或者函數來表達。更進一步,對象抽象出來之後,大多數對象都有自己的內部狀態,體現到代碼上也就是常見的類的屬性。

面向對象編程的基本思想本質上是對現實世界的一種抽象,萬物皆可抽象。

根據業務把對象抽象出來之後,每一個實例化的對象其實都可以有自己的狀態,比如:在最常見的遊戲場景中,每一個玩家都是“玩家”這類對象的一個實例,每一個玩家都有自己的名字,性別,等級,HP等屬性,這些屬性本質上就是玩家的狀態,隨着時間的推移,每個玩家的HP,等級等屬性會隨之變化,這些變化其實就是這個玩家狀態的變化。對應到有狀態的服務也是如此,之所以稱之為有狀態,是因為服務內部的對象狀態會隨着業務有着對應的變動,而這些變動只發生在這個服務內部,在外界看來,這個服務好像是有狀態的。

有狀態的服務本質上是一些有狀態對象的集合,這些對象狀態的變化只發生在當前服務進程中

優勢和劣勢

有狀態服務之所以被稱為有狀態,一個很大的原因是它可以追溯狀態的變化過程,也就是說一個有狀態的服務保存着狀態變化的記錄,並可以根據這些歷史記錄恢復到指定的狀態,這在很多場景下非常有用。舉一個很簡單的栗子:我們平時玩的斗地主遊戲,三個玩家,當有一個玩家因為網絡原因掉線,經過一段時間,這個玩家又重新上線,需要根據某些記錄來恢復玩家掉線期間系統自動出牌的記錄,這些出牌記錄在這個業務中其實就是這個玩家的狀態變化記錄。在有狀態的服務中,很容易做到這一點。

其實實際開發中很多場景不需要記錄每個狀態的變化,只保留最新狀態即可,不單單是因為保存每個狀態的變化需要大量的存儲和架構設計,更因為是很多業務根本不需要這些狀態變化記錄,業務需要的只是最新的狀態,所以大部分有狀態的服務只保存着最新的狀態。

有狀態的服務在設計難度上比無狀態的服務要大很多,不僅僅是因為開發設計人員需要更好的抽象能力,更多的是一致性的設計問題。現代的分佈式系統,都是由多個服務器組成一個集群來對外提供服務,當一個對象在服務器A產生之後,如果請求被分配到了服務器B上,這種情況下有狀態的服務毫無意義,為什麼呢?當一個相同的業務對象存在於不同的服務器上的時候,本質上就違背了現實世界的規則,你能說一個人,即出生在中國,又出生在美國嗎? 所以有狀態的服務對於一致性問題有着天然的要求,這種思想和微服務設計理想不謀而合,舉個栗子:一個用戶信息的服務,對外提供查詢修改能力,凡是用戶信息的業務必須通過這個服務來實現。同理,一個對象狀態的查詢修改以及這個對象的行為,必須由這個對象的服務來完成。

有狀態的服務要求相同業務對象的請求必須被路由到同一個服務進程。

因此,有狀態的服務對於同一個對象的橫向擴容是做不到的,就算是做的到,多個相同對象之間的狀態同步工作也必然會花費更多的資源。在很多場景下,有狀態的服務要注意熱點問題,例如最常見的秒殺,這裏並非是說有狀態服務不適合大併發的場景,反而在高併發的場景下,有狀態的服務往往表現的比無狀態服務更加出色。

Actor模型

在眾多的併發模型中,最適合有狀態服務設計的莫過於Actor模型了,如果你對actor模型還不熟悉,可以擼一遍菜菜之前的文章:https://mp.weixin.qq.com/s/eEiypRysw5jsC7iYUp_yAg  actor模型天生就具備了一致性這種特點,讓我們在對業務進行抽象的時候,不必考慮一致性的問題,而且每一個請求都是異步模式,在對象內部修改對象的狀態不必加鎖,這在傳統的架構中是做不到的。

基於actor模型,系統設計的難點在於抽象業務模型,一旦業務模型穩定,我們完全可以用內存方式來保存對象狀態(也可以定時去持久化),內存方式比用其他網絡存儲(例如redis)要快上幾個量級,菜菜也有一篇文章大家可以去擼一下:https://mp.weixin.qq.com/s/6YL3SnSriKEnpCyB5qkk0g  ,既滿足了一致性,又可以利用進程內對象狀態來應對高併發業務場景,何樂而不為呢?

有不少同學問過我,actor模型要避免出現熱點問題,就算有內存狀態為其加速,那併發數還是超過actor的處理能力怎麼辦呢? 其實和傳統做法類似,所有的高併發系統設計無非就是“分”一個字,無論是簡單的負載均衡,還是複雜的分庫分表策略,都是分治的一種體現。一台服務器不夠,我就上十台,百台…..

所有的高併發系統設計都是基於分治思想,把每一台服務器的能力發揮到極致,難度最大的還是其中的調度算法。

用actor模型來應對高併發,我們可以採用讀寫分離的思想,主actor負責寫請求,並利用某種通信機制把狀態的變化通知到多個從actor,從actor負責對外的讀請求,這個DB的讀寫分離思想一致,其中最難的當屬actor的狀態同步問題了,解決問題的方式千百種,總有一種適合你,歡迎你留言寫下你認為最好的解決方案。

案例(玩家信息服務)

由於菜菜是c#出身,對c#的Actor服務框架Orleans比較熟悉,這裏就以Orleans為例,其他語言的coder不要見怪,Orleans是一個非常優秀的Actor模型框架,而且支持最新的netcore 3.0版本,地址為:https://github.com/dotnet/orleans  有興趣的同學可以去看一下,而且分佈式事物已經出正式版,非常給力。其他語言的也非常出色java:https://github.com/akka/akka

golang:

1. 首先我們定義玩家的狀態信息

//玩家的信息,其實也就是玩家的狀態信息
    public class Player {
        /// <summary>
        /// 玩家id,同時也是玩家這個服務的主鍵
        /// </summary>
        public long Id { getset; }
        /// <summary>
        /// 玩家姓名
        /// </summary>
        public string Name { getset; }
        /// <summary>
        /// 玩家等級
        /// </summary>
        public int Level { getset; }
    }

2. 接下來定義玩家的服務接口

 /// <summary>
    /// 玩家的服務接口
    /// </summary>
    interface IPlayerService: Orleans.IGrainWithIntegerKey
    {
        //獲取玩家名稱
        Task<string> GetName();
        //獲取玩家等級
        Task<int> GetLevel();
        //設置玩家等級,這個操作會改變玩家的狀態
        Task<int> SetLevel(int newLevel);
    }

3. 接下來實現玩家服務的接口

public class PlayerService : GrainIPlayerService
    {
        //這裏可以用玩家的信息來代表玩家的狀態信息,而且這個狀態信息又充當了進程內緩存的作用
        Player playerInfo;
        public async Task<intGetLevel()
        
{
            return (await LoadPlayer()).Level;
        }

        public async Task<stringGetName()
        
{
            return (await LoadPlayer()).Name;
        }

        public async Task<intSetLevel(int newLevel)
        
{
            var playerInfo =await LoadPlayer();
            if (playerInfo != null)
            {
                //先進行數據庫的更新,然後在更新緩存的狀態, 進程內緩存更新失敗的幾率幾乎為0
                playerInfo.Level = newLevel;                
            }
            return 1;
        }

        private async Task< Player> LoadPlayer()
        {
            if (playerInfo == null)
            {
                var id = this.GetPrimaryKeyLong();
                //這裏模擬的信息,真實環境完全可以從持久化設備進行讀取
                playerInfo= new Player() { Id = id, Name = "玩家姓名", Level = 1 };
            }
            return playerInfo;
        }
    }

以上只是一個簡單案例,有狀態的服務還有更多的設計方案,以上只供參考

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?

數據中台的“自動化數據治理”時代已來

 

中台,我理解是能力的下沉,數據處理能力下沉為加工平台,數據處理結果下沉為數據資產。那麼數據治理能否下沉?可以下沉出什麼東西?

——宜信數據中台負責人 盧山巍

本文來源:宜信數據中台負責人盧山巍在億歐產業互聯網頻道“数字中台創新”沙龍的分享實錄

原文首發:億歐

億歐產業互聯網頻道10月24日在上海InnoSpace落地“数字中台創新”沙龍,活動匯聚了良品鋪子電商技術中心總監羅軼群、愛馳汽車科技信息總監杭瑜峰、宜信數據中台負責人盧山巍、ThoughtWorks首席諮詢師及極客時間《說透中台》專欄作者王健、億歐華東負責人繆國成、億歐產業互聯網頻道副主編黃志磊、億歐產業互聯網頻道作者龔晨霞參与分享,就数字中台話題展開深度討論。

宜信是一家成立於2006年從事普惠金融和財富管理業務的金融科技企業,2018年基於四大開源平台和中間件等技術,開始研發數據中台,並在宜信內部推廣使用。目前,宜信的中台部門一共分為兩大板塊:數據中台和AI中台。 

以下是盧山巍演講觀點梳理:

1、宜信數據中台指導思維:統一建設、敏捷開發

2、從開源到中台,關鍵詞是自助化

3、數據治理,更依賴人治還是自治? 

以下是演講速記實錄,經億歐產業互聯網頻道整理,供行業人士參考。

大家下午好,我叫盧山巍,來自宜信。剛才聽羅總高屋建瓴地介紹了中台的概念和應用,受益匪淺。我的分享會不太一樣:第一,我有一個限定詞是“數據”。羅總的分享對業務中台、組織中台、技術中台都有探討,而我本身是做數據的,所以我只介紹數據中台。第二,我個人是從純粹技術路線走上來的,分享的內容會比較具體而微 。

我今天分享的話題是《宜信數據中台建設三部曲》,內容將按照時間發展故事線來展開。分別是:「敏捷使者」— ABD時代(2015年-2018年) ;「自助奇兵」— ADX時代(2018年-2019年); 「自治歸來」— ADG時代(2019年-)。

2015年加入宜信之前,我在上海張江的eBay研發中心工作,當時的主要方向是大數據架構和研發,在付費廣告組做大數據相關的事情。由於我個人的關注點比較下沉,對平台技術更感興趣,因此總想在技術領域中做出一些框架和平台類的東西。 

1、宜信數據中台指導思維:統一建設、敏捷開發

2015年宜信找到我,說公司內部沒有數據平台,希望我能夠去帶領建設數據平台,於是我加入了宜信。

其實說“公司沒有數據平台”是不準確的,更準確地說應該是“公司沒有統一的數據平台”,因為公司很多業務線都有自己所謂的數據平台,有的做得好一點,有的是純粹的定製化,談不上平台化,因為公司規模很大,很多是自下而上地建設,不像銀行是自上而下去推動做這個事情。當時也沒有數據中台這個概念,只是說要做一個好的數據平台,感覺有點無從下手,很有挑戰,因此着手做了很多公司內部的調研和訪談,用幾張圖來展現當時的現狀。

左上角的圖表達的是業務的豎井,從前台到業務開發端,到數據端,甚至有的數據庫都沒打通。通常好的數據中台,要有好的業務中台配合,在業務豎井嚴重的現狀下,想在數據層融合打通是挺難的事。

左下角表達的是在2015年的時候,很多企業都面臨的兩個慢的問題,即:時效慢、實施慢。

一方面,那時比較主流的還是T+1批處理,很多企業沒有完善的流式處理平台,不像現在有很多成熟的選擇。一般來講都是只能滿足T+1時效的數據需求。

另一方面,因為沒有很好的自助平台給大家使用,就變成了需求提給特定的BI團隊,BI團隊接了這個需求,需求多了忙不過來,就開始排期,可能要1-2個月甚至以上的時間才能響應和處理這個需求。

有的業務部門比較有實力,擁有不少大數據工程師,使用了很多技術選型,比如MongoDB、ES、HBase、Cassandra、Phoenix、Presto、Spark、Hive、Impala等等各種技術選型都有,沒有統一的技術選型標準。而公司需求又是多樣化的,像上圖右邊的自助查詢、360全景分析、實時處理、多維分析、數據湖等等,使得大數據架構變得越來越複雜和臃腫,越來越難以建設和維護,再加上圖下方的數據治理、數據質量、數據安全等切面課題,當時面臨的就是這樣一個比較複雜的現狀。

在這樣的現狀之下思考整個問題,找尋解決方案。本身我個人是比較倡導敏捷開發思想的,敏捷開發更多是在業務開發方面的實踐經驗,大數據比較笨重,怎麼才能讓大象奔跑起來?我認為要用敏捷化思想去建設數據平台。經過調研和思考,形成了一系列大數據敏捷思想框架、實踐和方法論,更重要的是我們要落地一些中間件去驅動敏捷化實踐。

接下來我們先後自研了四个中間件平台:DBus、Wormhole、Moonbox、Davinci。既然用了這麼多的技術選型,又很難快速將它們統一到一套技術選型,還要能夠去統一收口管控關鍵節點,最好的辦法就是利用中間件思想去適配已有的選型,然後再去簡化整個架構。

下面這個圖就比較技術視角了,展示了整個數據處理的鏈路,從左到右,分為數據源層、數據集成層、數據總線層、數據處理層、數據存儲層、數據服務層和數據應用層 。其中數據源層,天然有各種各樣的選型,這是業務需要;數據存儲層,出於不同目的有了眾多技術選型,這個也沒法很快統一,而且本身也很難找到一個大數據存儲選型,能夠解決所有的存儲問題和計算問題,所以不得不面對多個存儲和計算的整合問題。

在應用端,需求場景驅動也是很難整合統一的。能夠整合收口的是數據集成層、數據總線層、數據處理層和數據服務層 。整個數據鏈路梳理完之後,是一種“開放+統一”的架構,有些層面是開放包容的,而有些層面是要統一收口管控的。

當然,上圖灰色的切面課題也是應該關注和支持的,因為我們當時的策略是做四个中間件工具DBus、Wormhole、Moonbox、Davinci,因此沒有太關注這些切面課題 。

下面分別介紹這些中間件工具:

  • DBus,能夠實時將數據抽取出來,可以對接多個數據庫和日誌,既可以實時抽取增量數據,也支持抽取全量數據,並與增量數據保持一致性id體系,以支持後續冪等入庫。
  • Wormhole,負責流式作業開發和管理,可以不用編寫代碼,只通過配置和SQL方式即可支持實時同步和流上處理邏輯。這也體現出敏捷性:一是中間件統一了通用技術實現,不用重複開發;二是不斷地降低數據項目實施成本,實施人員盡量關注業務邏輯本身,簡單培訓即可自助完成項目,這些都是敏捷思想的體現。舉個例子,從使用體驗上看,比如增量數據從Oracle實時出來,希望實時寫到MySQL里去,只要簡單配置一下就可以了,如果還需要有一些實時處理邏輯,比如流上增量數據去Lookup外面的Redis,只要寫一個SQL即可 。另外,因為我們做中間件而不重造引擎,所以Wormhole是基於主流流式計算引擎Spark和Flink開發的,用戶可以自行選擇希望的計算引擎。Flink還支持CEP操作,所以Wormhole也支持CEP規則配置。
  • Moonbox,異構系統混算服務,假設數據因為各種原因存放在各個不同的地方,但又希望能夠混算這些數據,你可以當Moonbox是一個“虛擬數據庫”來使用。比如A表在Oracle里,B表在MongoDB里,C表在ES里,一個完整的SQL發給Moonbox,會自動將結果混算出來並返回結果數據;同時,Moonbox還能有效利用各個存儲的計算優勢,將更多算子下推計算,以整體提高運算性能。
  • Davinci,可視化平台,一般可視化平台具備的功能Davinci基本都具備,並且支持豐富的可視化應用和系統整合能力,力圖解決“大數據最後十公里問題”。

這些中間件做出來后帶來了什麼效果?比如某條業務線2-3個數據相關人員,對業務非常了解,但沒有大數據技術開發背景,經過一兩周的培訓,就可以自助地、快速地完成各種實時數倉、實時報表、實時應用的端到端項目。這在以前是不可想象的,以前要做一個實時項目,需要有大數據技術開發背景的團隊來支持,而現在哪怕不是IT背景的人,培訓一下就可以做這個事情了,這就是敏捷中間件工具帶來的效率提升和成本減低。 

接下來更深入地介紹一下Wormhole。

除了上面說到的配置化和SQL化開發流式應用這些好處,從內部技術實現角度來看,很多流式開發要注意的典型問題也都被中間件屏蔽了,這些對用戶來說是透明支持的。 

  • 冪等Sink,流上的增量數據不保證強有序,但是落Sink的時候要做到最終一致性。Wormhole已經內置了這個處理邏輯,用戶只管寫好流上邏輯SQL就可以 。
  • HDFS小文件,做大數據大家都知道這個問題,Wormhole也內置了解決方案。
  • 多Flow支持,這是我們獨創的功能,如果做過Spark開發,會知道寫一個Spark程序,它起來後會一直占固定內存跑一個作業,而我們認為Spark streaming應該是物理資源管道,裏面的流上邏輯應該和物理資源解藕,所以我們設計開發了Flow的概念。Flow的定義就是從哪兒來,到哪兒去,在流上做什麼處理邏輯。解耦帶來的效果是一個Spark streaming物理管道可以跑多個邏輯Flow,比如說公司有1萬張表,需要同步到2萬個目標端,可能在以前開發需要起兩萬個Spark streaming作業,現在只需要起一個Spark streaming作業就可以了,比如設置50G內存,在裏面跑2萬個同步Flow工作,相當於做了邏輯層管道支持,這個還是比較獨創的,目前只有我們在這麼做。
  • 動態指令,這個是和運維相關的,我不希望每次改流式處理邏輯的時候都要去重啟這個流,而是能夠在線更改、實時生效。
  • 業務時間策略,以前Spark streaming是默認基於Process time去做計算的,現在流式引擎很成熟了,引擎內部支持基於Event time計算,但當時Spark streaming還沒有支持,所以這塊我們也做了相應的支持。
  • Flow漂移,這個也是運維相關,比如說,我們起了5個物理的Spark streaming管道,每個裡面跑10個Flow,某天某個業務線增量數據量激增,某個Stream資源不夠用了,Flow漂移能力就可以將這個邏輯Flow漂到其他空閑的Spark streaming物理管道里。這就是在不斷地降低流式處理運維開發的門檻,盡量做到敏捷化,也就是說我可以寫一個自動化小程序,定時檢測哪一個Spark streaming資源不夠,哪一個閑置,然後自動漂一個Flow,這樣可以做到流式處理的自動化運維。這個課題大家也在探索,批量作業相對很好運維,出了問題自動重啟就可以了,但流式處理的話就比較難運維了,包括資源大小、重啟Offset等等,我們在上面都做了很多的工作。所以我們不是簡單地包裝Spark,而是做了很多深入的東西的。

關於開源,我以前就職於eBay,eBay出了幾個Apache頂級開源項目,對我們也是很有影響的,所以我在宜信設計做這四個工具的時候,一開始就是朝着通用化開源工具的方向進行的。不知道在座大家有沒有聽說過這幾個工具,其中Davinci在社區是很火的,很多公司都有在用。

至此,第一階段工作趨於穩定,解決了公司內部很多的問題,開源的幾個工具不光是在公司內部得到很好的應用,在技術社區也賦能了很多其他企業。

第二階段是從去年下半年開始的。2017年我參加了杭州雲棲大會,聽過阿里分享的數據中台,那時“中台”這個詞還沒有流行起來。到了2018年初,我就在思考,認為數據中台是當下公司需要做的東西,於是跟CTO建議,他也很支持我們,之後沒幾個月,數據中台開始流行起來,所以我們也相當於趕上風口了。

2、從開源到中台,關鍵詞是自助化

ABD時代已經做得不錯了,為什麼還要再往上做數據中台?除了前面提到的業務線多、技術選型多、需求多等這些大家都知道的問題之外,從數據管理層面來看,如數據治理、數據資產等都還沒有涉及,還有很多切面上的課題也沒有過多考慮。之前因為開源也和一些社區、公司做過線下交流,都表示“你們的開源工具做得很好,但是離我們業務需求想要的中間感覺還差一塊”,其實差的就是一個類似數據中台的東西。

不管數據中台如何定義,企業需要一個能夠更加直接賦能業務的平台,因此我們可以在業務需求和中間件工具之間再提升一個層次,構建一個一體化、標準化、一站式的自助平台。

進入第二個時代,敏捷數據中台ADX。下圖大三角中的藍色三角,數據平台引擎,從技術層面來講,我們首先要基於之前的開源工具建設一個好用的自助平台。但是單單一個好的自助數據平台,不等同於數據中台。參考了很多數據中台文章和定義后,我們總結出數據中台還應該包括其他三塊。 

  • 一塊是數據資產體系,數據資產是好的數據信息的沉澱和復用,數據中台一定要將數據資產建設納入其中,具體方式比如將數據模型方法論固化並下沉系統化,這樣能夠更加規範化、標準化地支持沉澱數據資產。
  • 有了數據資產,有了好的平台,但如果壺很大、口很小,數據價值賦能業務帶寬不足,業務部門可能直觀感受會覺得好像只能看報表,會造成數據賦能能力不夠。所以對接前台業務不光要能提供報表,還需要能夠提供數據產品、數據API、自助分析等,這些都可以更好地賦能業務。
  • 有了這些,數據中台能不能真正運轉起來,還要看公司的流程制度和運營機制。比如我有好的數據資產,卻沒有數據運營機制保障,其他業務團隊也不會敢用,如果要復用的話我要對其負責,這些都是數據運營的考慮範疇。這些方面都做好之後,才有可能把數據中台做好並運作好。

數據中台的價值體現,在上圖右側也有展示,簡單來說就是“更省更快更准”,或者換個說法是“降本增效提質”,這就是數據中台的價值本質。

下面這張圖是ADX上一個大致的使用體驗,在自助化數據中台上,整個數據中台研發團隊就成為在其背後的IT團隊了。用戶不必和我們直接打交道,在平台上可以自助地申請資源、申請庫表,自助開發、自助運維、查看監控 、設置報警、診斷問題、上線下線等,我們只要做好平台設計、研發和運維,這是我們想達到的效果,更加全面徹底的自助化、平民化。

數據中台是基於模塊化思想建設的,拆分為眾多子模塊,之間關係是分層和聯合的。比如統一的數據歸集、數據加工、數據模型、監控預警等,這些和其他公司思路都差不多;右側的數據管理、中台管理,都是在解決切面的課題;上面部分是貼近業務使用的模塊。模塊很多這裏不一一展開介紹。

值得一提的是,主要核心模塊都不是從零開發,而是基於ABD開源工具整合打通構建的,所以ADX不是推翻了以前的ABD,而是基於ABD更加抽象、更模式化、更面向業務去做上層建築。

現在處於ADX時代,下圖就有所變化了。DataHub整合了數據集成和數據總線層,以前DBus只支持流式歸集和分發,而DataHub不管是流式還是批量都可以支持。DataWorks之於Wormhole也是如此,相當於ABD功能的擴展外延。

下層的切面課題,也都有相應的模塊對應解決。所以說ADX更加平台化,不像以前我們做了幾個比較好的開源工具,然後大家自己DIY組合去解決各種場景項目,現在是基於一站式自助平台,用戶可以在其上完成各種各樣的日常數據處理工作。

再提一下DataHub,這個模塊當時做的時候沒覺得怎樣,做出來以後大家都覺得真的很方便,很強大。

下圖從DataHub這個模塊外面站在黑盒的角度去看,可以想要什麼數據就能得到什麼數據:比如我想要某張表的每天T+1快照,它會返給我;我想要這張表的任何一個歷史時刻的精確快照,它也能返給我;我想要這張表的實時流數據,它還能返給我。之所以能做到這點,因為我們把所有表的全量+增量數據都實時落入數據湖,並基於ABD開源工具的整合模式提供各種各樣的所需數據形態,因此從數據層面來看,理論上你想要什麼,DataHub都可以提供。我們也了解了社區一些類似的數據整合方案,大部分都是提供單純工具層面的功能,而沒有內置實時數據湖。DataHub包含了一個數據湖,全公司所有的數據都可以實時地統一地歸集和維護進來,所有的數據使用方,想要什麼就可以返回什麼,這是非常方便和徹底的使用體驗。

第二個時代ADX時代,從開發到上線到現在大規模應用,有一年多的時間,基本能力都已具備。到了第三個時代,我們更關注數據資產能力和數據治理能力建設,沒有數據資產就談不上數據中台,而數據治理是確保數據資產有效沉澱和賦能業務的重要保障。

數據治理這個課題,在數據鏈路每一層都有對應可能存在的問題,這些問題有些可以在系統層面解決,但更多的是依賴於人去治、依賴於組織去治,且依然不容易得到完美的解決。在這個課題上我們也在思考和摸索中,以下僅限於探討。

3、數據治理,更依賴人治還是自治?

下面是我們的一些思考。“自治”包含兩層含義:自動化治理和自助化治理。

中台,我理解是能力的下沉,數據處理能力下沉為加工平台,數據處理結果下沉為數據資產。那麼數據治理能否下沉?可以下沉出什麼東西?

一類是下沉出一些平台工具,比如元數據管理、數據質量管理,這些可以做得很通用化、工具化;一類是下沉出一些方法論的系統化,比如阿里的OneData,是一套內部打磨出來的本地化的方法論,落地為一套系統體系,這套體系和方法論不一定適合於每家公司,但我覺得這個思路每家公司都可以借鑒,打磨適合本企業業務體系的方法論,然後將之系統化,更好地約束和規範化企業內的數據治理管理和數據資產建設。

對於“自動化”數據治理,以上兩類依然不能覆蓋所有問題,比如企業有很多遺留系統、遺留流程,無法在短時間內進行大規模的、統一的改造和遷移,那麼怎樣去管控它、治理它?這依然是一個難題。RPA是一個比較新興的思路,可以很好地處理遺留系統的問題,這一點和數據治理也許可以找到很好的交叉點,比如可以利用流程編排、自動執行的思想,應對一些遺留系統、遺留環境的數據治理問題。

關於“自助化”數據治理,數據治理和數據處理不太一樣,比如流式處理,這是一個業務能夠直觀感受到的剛需,不管什麼業務都會有很強的需求。而數據治理不同,從業務角度來看,數據治理雖然就長期而言可以為整個企業和業務發展帶來堅實的正面影響,但短期內可能會限制業務快速發展的速度,所以業務方可能不會有特別大的動力去主動支持和配合數據治理。

有些企業會自上而下強制推行數據治理的管理和實踐,這是需要管理層有這個意識和決心的。我們公司不太一樣,數據治理需要向業務快速迭代和需求快速變更妥協,無法做到自上而下強推,但又不能不治,因此我們考慮能不能自助化地做數據治理。比如業務線可以建立自己的私有數據資產,如果希望升級成公有數據資產,可以進行申請審核,當然這要可以為業務線帶來好處,要和KPI綁定,這樣一來,數據資產的運營能力可以下放,讓大家主動共同參与到數據治理中來,這種柔性數據治理推廣方式可能會更有效,這也是我們在嘗試的工作。

上圖只是一個粗略的概念架構圖,還不是特別成熟,這也是我們現在在思考的一些思路。如果可以把公司所有的元數據歸集起來,形成一個企業級元數據全景圖譜的話,我們就具備了數據知識;因為我們有Moonbox,我們就具備了各種數據操作能力;基於數據知識能力和數據操作能力,就可以根據數據治理的經驗、規則和現狀的流程梳理,進行數據治理動作的可視化編排,最終形成一個自動化數據治理的體系和框架。

數據治理純靠人的話,不確定性因素太大,相對來說我更相信工具,相信通過不斷的抽象、下沉和驗證,可以找到一套更系統化的流程方式和配套工具去做得更好。

以上就是我們四年來數據中台建設的三個時代走過的歷程,前路依然任重道遠,還需繼續摸索沉澱,希望可以和大家多多交流探討,感謝大家的聆聽!

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

台灣寄大陸海運貨物規則及重量限制?

大陸寄台灣海運費用試算一覽表

南投搬家前需注意的眉眉角角,別等搬了再說!

臉書前主管成立氣候組織 助員工施壓企業拚永續

摘錄自2020年2月24日中央社報導

臉書(Facebook)前永續部門主管魏爾(Bill Weihl)宣布創立新組織「氣候之聲」(ClimateVoice),協助大企業員工對老闆施壓,以拿出更積極的政策對抗氣候變遷。

2018年離開臉書的魏爾說:「當一個議題對社會整體可能很重要、卻未直接影響到企業時,基本上大多數企業多數時間都會保持沈默。」

「氣候之聲」一開始將以志工方式運作,但希望不久後能募得資金並雇用員工。魏爾表示,「氣候之聲」將推動科技業員工組織並強化氣候變遷倡議運動,以施壓公司高層對相關立法進行遊說。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?

環團踢爆義政府 縱放有害物至馬國

摘錄自2020年2月19日台灣醒報報導

根據《半島新聞台》報導,環保組織綠色和平踢爆,義大利多間公司利用法律漏洞,違法出口工業廢棄物,將大量不可回收及含有傷害環境的化學物質非法出口至馬來西亞堆積,對環境造成嚴重危害。

依照歐盟規定,其成員國若要出口廢棄物至非歐盟國家進行處理,必須要符合「可回收」的特點,接收方也必須要有能力處理這些回收物質。然而義大利看中歐盟未落實管制的漏洞,去年共出口逾2880噸的廢棄物至馬來西亞,其中超過半數無法回收,甚至包含苯聚合物等對環境造成危害的化學物質。

據《衛報》報導,中國政府2018年宣佈禁止進口廢棄物處理產業後,馬來西亞便成為世界上最大的廢棄物進口處理國,據統計,回收業每年約有500億美元的驚人產值。

然而,與這些義大利公司合作的馬來西亞工廠不但是違法設立,連處理量能都嚴重不足,多出來的廢棄物就直接堆積在工廠周遭。坐擁許多廢棄物處理廠的馬來西亞城市雙溪大年,2019年感染疾病的人數更因此遽增3成。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

台灣寄大陸海運貨物規則及重量限制?

大陸寄台灣海運費用試算一覽表

南投搬家前需注意的眉眉角角,別等搬了再說!

南極洲熱浪來襲九天 鷹島融化約20%積雪

摘錄自2020年2月25日中央社報導

南極洲這個月初遭為期九天的熱浪侵襲,位於南極洲東北端的鷹島(Eagle Island)約20%積雪融化,這是日益加劇的氣候危機所帶來的普遍徵兆。

NASA地球觀測站表示,僅一週左右時間,鷹島的積雪就融化4英吋(約10公分),大約占該島季節性積雪總量的20%。

麻薩諸塞州尼柯斯學院(Nichols College)地理學家裴爾托(Mauri Pelto)告訴NASA觀測站:「我從未看過南極洲冰雪融化形成水池的速度如此之快。你可以在阿拉斯加和格陵蘭看到這樣的融冰現象,但南極洲很罕見。」

氣候學家費特韋斯(Xavier Fettweis)繪出從南極半島流入海水的融冰量,並指出熱浪是造成今夏海平面上升的最大主因。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?

PM 2.5壟罩南亞 印度新德空污最嚴重

摘錄自2020年2月25日中央社報導

研究人員今(25日)發布報告指出,全球200座最受致命污染微粒衝擊的城市,有近9成位於中國和印度,其餘則集中在巴基斯坦與印尼等地。

法新社報導,據IQAir Group與環保團體「綠色和平」(Greenpeace)聯合公布的2019全球空氣品質報告(2019 World Air Quality Report),孟加拉是PM2.5污染最嚴重的國家,接著是巴基斯坦、蒙古、阿富汗和印度;中國排名11。

2019年,1000萬人以上的巨型都市中,PM2.5污染最嚴重的是印度首都新德里,其次依序為巴基斯坦的拉合爾(Lahore)、孟加拉首都達卡(Dhaka)、印度加爾各答(Kolkata)、中國臨沂和天津、印尼雅加達、中國武漢。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

台灣寄大陸海運貨物規則及重量限制?

大陸寄台灣海運費用試算一覽表

南投搬家前需注意的眉眉角角,別等搬了再說!

日311地震重災區 女川核電廠2號機通過重啟審查

摘錄自2020年02月26日中央社報導

日本女川核電廠2號機以重啟運轉為前提的申請,已通過日本原子力規制委員會審查,成為位於311大地震重災區首座合格的核電廠,也是第2座遭受海嘯侵襲重生的核電廠。

日本放送協會(NHK)報導,東北電力公司希望位於宮城縣的女川核電廠2號機能重啟運轉提出申請,日本原子力規制委員會今(26日)已正式彙整完成表示合格的審查書。

女川核電廠2號機是位於2011年311大地震後遭受重創的東北地方,首度獲審查合格的核電廠機組。東北電力公司在311大地震2年後的2013年,以重啟運轉為前提向原子力規制委員會提出審查申請。

持續進行審議的原子力規制委員會,2019年11月彙整出表示事實上符合新規範標準的審查書草案,並向一般民眾徵集意見。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?

程序員需要了解的硬核知識之操作系統和應用

利用計算機運行程序大部分都是為了提高處理效率。例如,Microsoft Word 這樣的文字處理軟件,是用來提高文本文件處理效率的程序,Microsoft Excel 等表格計算軟件,是用來提高賬本處理效率的程序。這種為了提高特定處理效率的程序統稱為 應用

程序員的工作就是編寫各種各樣的應用來提高工作效率,程序員一般不編寫操作系統,但是程序員編寫的應用離不開操作系統,此篇文章我們就針對 Windows 操作系統來說明一下操作系統和應用之間的關係。

操作系統功能的歷史

操作系統其實也是一種軟件,任何新事物的出現肯定都有它的歷史背景,那麼操作系統也不是憑空出現的,肯定有它的歷史背景。

在計算機尚不存在操作系統的年代,完全沒有任何程序,人們通過各種按鈕來控制計算機,這一過程非常麻煩。於是,有人開發出了僅具有加載和運行功能的監控程序,這就是操作系統的原型。通過事先啟動監控程序,程序員可以根據需要將各種程序加載到內存中運行。雖然仍舊比較麻煩,但比起在沒有任何程序的狀態下進行開發,工作量得到了很大的緩解。

隨着時代的發展,人們在利用監控程序編寫程序的過程中發現很多程序都有公共的部分。例如,通過鍵盤進行文字輸入,显示器進行數據展示等,如果每編寫一個新的應用程序都需要相同的處理的話,那真是太浪費時間了。因此,基本的輸入輸出部分的程序就被追加到了監控程序中。初期的操作系統就是這樣誕生了。

類似的想法可以共用,人們又發現有更多的應用程序可以追加到監控程序中,比如硬件控製程序編程語言處理器(彙編、編譯、解析)以及各種應用程序等,結果就形成了和現在差異不大的操作系統,也就是說,其實操作系統是多個程序的集合體。

我在 這篇文章中提到了彙編語言,這裏簡單再提一下。

彙編語言是一種低級語言,也被稱為符號語言。彙編語言是第二代計算機語言,在彙編語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。用一些容易理解和記憶的字母,單詞來代替一個特定的指令,比如:用ADD代表数字邏輯上的加減,MOV代表數據傳遞等等,通過這種方法,人們很容易去閱讀已經完成的程序或者理解程序正在執行的功能,對現有程序的bug修復以及運營維護都變得更加簡單方便

可以說共用思想真是人類前進的一大步,對於解放生產力而言簡直是太重要了

要把操作系統放在第一位

對於程序員來說,程序員創造的不是硬件,而是各種應用程序,但是如果程序員只做應用不懂硬件層面的知識的話,是無法成為硬核程序員的。現在培訓機構培養出了一批怎麼用的人才,卻沒有培訓出為什麼這麼做的人才,畢竟為什麼不是培訓機構教的,而是學校教的,我很相信耗子叔說的話:學習沒有速成這回事。言歸正題。

在操作系統誕生之後,程序員不需要在硬件層面考慮問題,所以程序員的數量就增加了。哪怕自稱對硬件一竅不通的人也可能製作出一個有模有樣的程序。不過,要想成為一個全面的程序員,有一點需要清楚的就是,掌握硬件的基本知識,並藉助操作系統進行抽象化,可以大大提高編程效率。

下面就看一下操作系統是如何給開發人員帶來便利的,在 Windows 操作系統下,用 C 語言製作一個具有表示當前時間功能的應用。time() 是用來取得當前日期和時間的函數,printf() 是把結果打印到显示器上的函數,如下:

#include <stdio.h>
#include <time.h>

void main(){
  // 保存當前日期和時間信息
  time_t tm;
  
  // 取得當前的日期和時間
  time(&tm);
  
  // 在显示器上显示日期和時間
  printf("%s\n", ctime(&tm));
}

讀者可以自行運行程序查看結果,我們主要關注硬件在這段代碼中做了什麼事情

  • 通過 time_t tm,為 time_t 類型的變量申請分配內存空間;
  • 通過 time(&tm) ,將當前的日期和時間數據保存到變量的內存空間中
  • 通過 printf(“%s\n”,ctime(&tm)), 把變量內存空間的內容輸出到显示器上。

應用的可執行文件指的是,計算機的 CPU 可以直接解釋並運行的本地代碼,不過這些代碼是無法直接控制硬件的,事實上,這些代碼是通過操作系統來間接控制硬件的。變量中涉及到的內存分配情況,以及 time() 和 printf() 這些函數的運行結果,都不是面向硬件而是面向操作系統的。操作系統收到應用發出的指令后,首先會對該指令進行解釋,然後會對 時鐘IC 和显示器用的 I/O 進行控制。

計算機中都安裝有保存日期和時間的實時時鐘(Real-time clock),上面提到的時鐘IC 就是值該實時時鐘。

系統調用和編程語言的移植性

操作系統控制硬件的功能,都是通過一些小的函數集合體的形式來提供的。這些函數以及調用函數的行為稱為系統調用,也就是通過應用進而調用操作系統的意思。在前面的程序中用到了 time() 以及 printf() 函數,這些函數內部也封裝了系統調用。

C 語言等高級編程語言並不依存於特定的操作系統,這是因為人們希望不管是Windows 操作系統還是 Linux 操作系統都能夠使用相同的源代碼。因此,高級編程語言的機制就是,使用獨自的函數名,然後在編譯的時候將其轉換為系統調用的方式(也有可能是多個系統調用的組合)。也就是說,高級語言編寫的應用在編譯后,就轉換成了利用系統調用的本地代碼

不過,在高級語言中也存在直接調用系統調用的編程語言,不過,利用這種方式做成應用,移植性並不友好。

移植性:移植性指的是同樣的程序在不同操作系統下運行時所花費的時間,時間越少證明移植性越好。

操作系統和高級編程語言使硬件抽象化

通過使用操作系統提供的系統調用,程序員不必直接編寫控制硬件的程序,而且,通過使用高級編程語言,有時也無需考慮系統調用的存在,系統調用往往是自動觸發的,操作系統和高級編程語言能夠使硬件抽象化,這很了不起。

下面讓我們看一個硬件抽象化的具體實例

#include <stdio.h>

void main(){
  
  // 打開文件
  FILE *fp = fopen("MyFile.txt","w");
  
  // 寫入文件
  fputs("你好", fp);
  
  // 關閉文件
  fclose(fp);
}

上述代碼使用 C 編寫的程序,fputs() 是用來往文件中寫入字符串的函數,fclose() 是用來關閉文件的函數。

上述應用在編譯運行后,會向文件中寫入 “你好” 字符串。文件是操作系統對磁盤空間的抽象化,就如同我們在 這篇文章提到的一樣,磁盤就如同樹的年輪,磁盤的讀寫是以扇區為單位的,通過磁道來尋址,如果直接對硬件讀寫的話,那麼就會變為通過向磁盤用的 I/O 指定扇區位置來對數據進行讀寫了。

但是,在上面代碼中,扇區壓根就沒有出現過傳遞給 fopen() 函數的參數,是文件名 MyFile.txt 和指定文件寫入的 w。傳遞給 fputs() 的參數,是往文件中寫入的字符串”你好” 和 fp,傳遞給 fclose() 的參數,也僅僅是 fp,也就是說磁盤通過打開文件這個操作,把磁盤抽象化了,打開文件這個操作就可以說是操作硬件的指令。

下面讓我們來看一下代碼清單中 fp 的功能,變量 fp 中被賦予的是 fopen() 函數的返回值,該值被稱為文件指針。應用打開文件后,操作系統就會自動申請分配用來管理文件讀寫的內存空間。內存地址可以通過 fopen() 函數的返回值獲得。用 fopen() 打開文件后,接下來就是通過制定的文件指針進行操作,正因為如此,fputs() 和 fclose() 以及 fclose() 參數中都制定了文件指針。

由此我們可以得出一個結論,應用程序是通過系統調用,磁盤抽象來實現對硬盤的控制的。

Windows 操作系統的特徵

Windows 操作系統是世界上用戶數量最龐大的群體,作為 Windows 操作系統的資深用戶,你都知道 Windows 操作系統有哪些特徵嗎?下面列舉了一些 Windows 操作系統的特性

  • Windows 操作系統有兩個版本:32位和64位
  • 通過 API 函數集成來提供系統調用
  • 提供了採用圖形用戶界面的用戶界面
  • 通過 WYSIWYG 實現打印輸出,WYSIWYG 其實就是 What You See Is What You Get ,值得是显示器上显示的圖形和文本都是可以原樣輸出到打印機打印的。
  • 提供多任務功能,即能夠同時開啟多個任務
  • 提供網絡功能和數據庫功能
  • 通過即插即用實現設備驅動的自設定

這些是對程序員來講比較有意義的一些特徵,下面針對這些特徵來進行分別的介紹

32位操作系統

這裏表示的32位操作系統表示的是處理效率最高的數據大小。Windows 處理數據的基本單位是 32 位。這與最一開始在 MS-DOS 等16位操作系統不同,因為在16位操作系統中處理32位數據需要兩次,而32位操作系統只需要一次就能夠處理32位的數據,所以一般在 windows 上的應用,它們的最高能夠處理的數據都是 32 位的。

比如,用 C 語言來處理整數數據時,有8位的 char 類型,16位的short類型,以及32位的long類型三個選項,使用位數較大的 long 類型進行處理的話,增加的只是內存以及磁盤的開銷,對性能影響不大。

現在市面上大部分都是64位操作系統了,64位操作系統也是如此。

通過 API 函數集來提供系統調用

Windows 是通過名為 API 的函數集來提供系統調用的。API是聯繫應用程序和操作系統之間的接口,全稱叫做 Application Programming Interface,應用程序接口。

當前主流的32位版 Windows API 也稱為 Win32 API,之所以這樣命名,是需要和不同的操作系統進行區分,比如最一開始的 16 位版的 Win16 API,和後來流行的 Win64 API

API 通過多個 DLL 文件來提供,各個 API 的實體都是用 C 語言編寫的函數。所以,在 C 語言環境下,使用 API 更加容易,比如 API 所用到的 MessageBox() 函數,就被保存在了 Windows 提供的 user32.dll 這個 DLL 文件中。

提供採用了 GUI 的用戶界面

GUI(Graphical User Interface) 指得就是圖形用戶界面,通過點擊显示器中的窗口以及圖標等可視化的用戶界面,舉個例子:Linux 操作系統就有兩個版本,一種是簡潔版,直接通過命令行控制硬件,還有一種是可視化版,通過光標點擊圖形界面來控制硬件。

通過 WYSIWYG 實現打印輸出

WYSIWYG 指的是显示器上輸出的內容可以直接通過打印機打印輸出。在 Windows 中,显示器和打印機被認作同等的圖形輸出設備處理的,該功能也為 WYSIWYG 提供了條件。

藉助 WYSIWYG 功能,程序員可以輕鬆不少。最初,為了是現在显示器中显示和在打印機中打印,就必須分別編寫各自的程序,而在 Windows 中,可以藉助 WYSIWYG 基本上在一個程序中就可以做到显示和打印這兩個功能了。

提供多任務功能

多任務指的就是同時能夠運行多個應用程序的功能,Windows 是通過時鐘分割技術來實現多任務功能的。時鐘分割指的是短時間間隔內,多個程序切換運行的方式。在用戶看來,就好像是多個程序在同時運行,其底層是 CPU 時間切片,這也是多線程多任務的核心。

提供網絡功能和數據庫功能

Windows 中,網絡功能是作為標準功能提供的。數據庫(數據庫服務器)功能有時也會在後面追加。網絡功能和數據庫功能雖然並不是操作系統不可或缺的,但因為它們和操作系統很接近,所以被統稱為中間件而不是應用。意思是處於操作系統和應用的中間層,操作系統和中間件組合在一起,稱為系統軟件。應用不僅可以利用操作系統,也可以利用中間件的功能。

相對於操作系統一旦安裝就不能輕易更換,中間件可以根據需要進行更換,不過,對於大部分應用來說,更換中間件的話,會造成應用也隨之更換,從這個角度來說,更換中間件也不是那麼容易。

通過即插即用實現設備驅動的自動設定

即插即用(Plug-and-Play)指的是新的設備連接(plug) 后就可以直接使用的機制,新設備連接計算機后,計算機就會自動安裝和設定用來控制該設備的驅動程序

設備驅動是操作系統的一部分,提供了同硬件進行基本的輸入輸出的功能。鍵盤、鼠標、显示器、磁盤裝置等,這些計算機中必備的硬件的設備驅動,一般都是隨操作系統一起安裝的。

有時 DLL 文件也會同設備驅動文件一起安裝。這些 DLL 文件中存儲着用來利用該新追加的硬件API,通過 API ,可以製作出運行該硬件的心應用。

文章參考:

《程序是怎樣跑起來的》第九章

關注公眾號後台回復 191106 即可獲得《程序是怎樣跑起來的》电子書

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?