標籤: USB CONNECTOR.收購3c

  • 世界各國紛紛加入禁售汽柴油車時間表,但問題有這麼簡單嗎?

    世界各國紛紛加入禁售汽柴油車時間表,但問題有這麼簡單嗎?

      空氣污染已經成為全球熱門議題,從之前英國、法國、印度都宣佈在2020~2040年逐步禁止販售汽柴油車,以及對柴油車加重課稅等政策,2017年9月中國宣布正在研究禁售傳統能源汽車的時間表,一直到今天為了搶救空污,我們的行政院也宣布:2040年新售汽車全面電動化。一時之間世界各國紛紛加入禁止販售汽柴油車行列,好像只要在路上跑的都是電動車,空氣就不再污染,人類的能源問題迎刃而解。然而現實很嚴峻,如果要讓路上跑都是電動車,那我們至少要再蓋幾座大型發電廠,請問,世界各國的政府禁售汽柴油車同時,都開始規劃新建大型發電廠了嗎?    
    汽柴油車的確是空氣污染的元兇   人類的空氣污染是從工業化以後就一直存在的問題,到1980年代以後世界各國努力拚經濟,工業化與自動化也讓汽車價格逐年降低,最後讓更多人能買車,因此空氣污染更嚴重,火力發電廠與一般工廠每天排放出來的污染物就夠令人傷腦筋了!汽柴油車是拖著一支長長的排氣管滿街排放廢氣,更是造成今天空氣污染的元兇,因為發電廠或工廠排放的污染物可以集中管理,硫化物、氮化物、PM2.5微粒等污染物可利用化學或物理方法回收,但儘管如此,住在旁邊的居民一定還是覺得空氣明顯比較差,因為不論再好的回收設備,都不可能百分之百回收污染物,就更不用說汽柴油車分散在大街小巷,要回收污染物又必須考慮成本問題,觸媒轉化器也只能減少污染物,其他無法減少的只能任由它排放到空氣裡了!  
    註:PM是指懸浮微粒(Particulate Matter),PM2.5是指直徑2.5微米以下的懸浮微粒,頭髮直徑大約100微米,因此PM2.5是肉眼看不見的污染物,但是吸入人體可能會造成肺部或身體的病變。    
    全面改用電動車是不是人類的能源問題就解決了?   以電動車全面取代汽柴油車的確是可以減少空氣污染,其實過去大家也都知道,只是以前沒有成熟的電池技術,目前人類最成熟的二次電池包括:鉛蓄電池、鎳鎘電池、鎳氫電池、鋰電池等,如表一所示,其中鉛蓄電池能量密度太低、鎳鎘電池有污染問題,一直到鎳氫電池出現才大量應用在汽車;鎳氫電池的能量密度較高,安全性又很好,因此Toyota 應用在Camry、Prius 等油電混合車,由於有汽油協助使用引擎充電,因此電池不需要太大,這種技術已使用超過十年沒有太大的問題,但是由於它的能量密度不夠高,不容易應用在完全使用電池的電動車,因此唯一的機會就只有鋰電池了!  

    ▲表一:二次電池的種類。(Source:Ansforce)鋰電池又分為鋰離子電池與聚合物理電池,它們的陽極材料相似,主要差別在陰極材料與電解液使用「高分子聚合物」取代,可降低成本且增加能量密度,不過這些高分子聚合物通常化學安定性不佳,安全性較低,應用在汽車較困難。因此鋰離子電池成為目前電動車的最佳選擇,再加上鋰電池堆疊技術與電池管理系統(BMS:Battery Management System)成熟,造就了這幾年電動車市場的蓬勃發展。為了解決鋰電池可能爆炸的問題,業界也已經開始發展「全固態鋰離子電池」。【延伸閱讀】對鋰離子電池的原理有興趣的人可以參考〈〉。【延伸閱讀】對鋰離子電池的原理有興趣的人可以參考〈〉。    
    電動車如何充電是個大問題   問題是電動車要充電,如何充電是個大問題,因為電動汽車的電池重達200公斤,很難由使用者如Gogoro機車那樣自行更換充電,只能以定點充電的方式進行,即使目前的規格要求在1小時內完成充電,使用者是否能在加「電」站等1小時卻是個問題。如果必須把車開回家在停車場充電,最大的問題是目前的電力基礎建設不足。假設大樓停車場有100個停車位,每個都設置插座,當100台電動車同時充電,大樓變壓器無法承受如此巨大的電流,因此整個電力基礎建設,包括變壓器、變電所、高壓電塔都必須重新設計才能達成,聽起來就不是短期內可做到的事。此外,牆壁上插座裡的電又是那裡來的呢?是由發電廠來的,說來說去,又回到了最原始的火力、水力、核能發電來提供電力。核能目前社會接受的可能性很低,在台灣想蓋水庫都很困難了更別說水力發電廠,說來說去又回到最原始的火力發電,不論使用天然氣或煤碳,最後還是免不了要造成空氣污染,因此要說電動車可改善空氣污染是對的,但說這樣就能完全解決空氣污染,那隻是把城市裡的空氣污染轉移到郊區發電廠而已。如果要讓路上跑都是電動車,那我們至少要再蓋幾座大型發電廠,請問,世界各國的政府計畫禁售汽柴油車同時,都開始規劃新建大型發電廠了嗎?    
    氫能與燃料電池:終極環保的再生能源?氫氣來源是個大問題   傳統電池直接使用化學反應產生能量,優點是能量轉換效率很高(80%以上),但是充電需要比較長的時間;而使用燃料以內燃機(汽車引擊)進行燃燒反應產生能量,優點是可以直接補充燃料,但是使用內燃機的能量轉換效率很低(30%以下)。科學家開始思考,有沒有一種方法同時具「電池」與「燃料」的優點呢?於是燃料電池從此誕生了。燃料電池和傳統電池的原理相同,都是將活性物質的化學能轉換成電能,但是傳統電池的電極本身是活性物質,會參與化學反應;而燃料電池的電極本身只是儲存容器而已,並不會參與化學反應(觸媒只用來引發化學反應),必須將活性物質(氫氣或含氫原子的化合物)加入電池內(就好像汽車補充燃料),才能產生化學反應形成電能,是一種要補充燃料的電池,故稱為「燃料電池」(Fuel cell)。燃料電池使用氫氣與氧氣反應產生水,反應後排放的氮化物或硫化物極少,幾乎沒有任何污染,因此被視為終極環保的再生能源。但是燃料電池必須使用氫氣為燃料,卻成為最大的問題。高壓儲氫技術如何把又大又重又危險的氫氣鋼瓶放在車上是個大問題;因此有國外公司開發出可以承受700大氣壓的航太複合材料儲氫瓶,可以取代氫氣鋼瓶,Toyota公司更在去年推出氫燃料電池車款Mirai創下單次加滿氫氣可行駛500公里的紀錄,已經是成功的商品了,那麼它的問題到底在那裡呢?【延伸閱讀】對鋰離子電池原理有興趣的人可參考〈〉。    
    氫燃料電池車款Mirai   首先車上放了一個壓力這麼大的儲氫瓶是否安全是個問題,氫氣的來源則是更大的問題。大家都知道電解水可以產生氫氣與氧氣,問題是電解水產生氫氣的成本很高,而且這些電還是來自發電廠,結局還是要用火力、核能、水力發電來提供電力,為了降低成本,目前工業主要是將碳氫化合物(石油)以「蒸氣重組」(Steam reforming)方式分解生產氫氣,搞了半天還是要以石油為原料,看起來人類還真是擺脫不了石化燃料。    
    為什麼世界各國都是訂定2040年禁售汽柴油車?   很有趣的現象,世界各國都是訂定2040年全面禁售汽柴油車,為什麼是這個時間呢?主要還是大家覺得前面我們介紹的這些問題,包括充電站建置、電力基礎建設、新建大型發電廠,或是太陽能、風力發電等新能源開發,大約需要20年時間,因此選擇了這個時間點。不過各國政府爭先恐後這樣「宣誓」,還有一門不可言傳的心思,那就是老百姓對空氣污染已忍無可忍,但是眼見要解決這個問題困難重重,宣誓「2040年」禁售汽柴油車,等於是給老百姓交代,反正2040年是22年以後的事了,到時是誰執政還不知道,且到時候站在台上的一定不是現在宣誓的那個人,這種只靠嘴巴說說就可以成功的「政績」,何樂而不為?    
    能源問題人人有責,不能把責任推給政府   經過前面的介紹,大家一定發現人類的能源問題沒有這麼簡單,政府該做的,不只是只靠嘴巴說宣誓禁售汽柴油車,而是必須認真開始發展綠色能源。目前最大的問題在於:電價太便宜造成使用者沒有節約用電的習慣,各種價格較高的家庭能源管理系統(Home Energy Management System,HEMS)乏人問津。電價如果真的大漲又會造成物價波動,受限於選舉與政治因素,要讓電價上漲也是困難重重,只能靠我們自己養成時時節約能源的習慣,才是有效的方法。(合作媒體:。首圖來源:public domain CC0)  

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

    【其他文章推薦】

    ※為什麼 USB CONNECTOR 是電子產業重要的元件?

    收購3c,收購IPHONE,收購蘋果電腦-詳細收購流程一覽表

    網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想要讓你的商品在網路上成為最夯、最多人討論的話題?

    ※高價收購3C產品,價格不怕你比較

    ※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

  • 電動機車充換電站布建計畫,換電站將以Gogoro的電池為基準

    電動機車充換電站布建計畫,換電站將以Gogoro的電池為基準

    為推行節能減碳與電動車產業,行政院去年年底宣布2035年禁售燃油機車,而經濟部也不落人後,近日宣布在未來五年內將建立3,310座電動機車充換電站,預估將花費40億元,而換電站將以Gogoro的電池與換電技術為基準。

      在「電動機車充換電站計畫」中,其中1成為充電站、9成為換電站,而國營事業中油公司帶頭建置1,000座充換電站,另外2,310座則開放民眾從本月中旬申請,政府將補助每座充電站50%的經費,每案件最高不超過30萬元,兩方補助經費各20億。   現在充換電站規格已有國際標準,但是換電站全世界都尚未標準化,經濟部認為,Gogoro的電池與換電技術在台灣居領先地位,其電池將成為電動機車產業標準規格。而電池與換電技術為專利所有,廠商需個別與Gogoro洽談授權金額。   目前全台電動機車約10萬輛,充電站約有1,800座,其中Gogoro佔全台電動機車的85.1%,擁有超過5萬名車主,而Gogoro自2015年開始布建電池交換站,平均1.8天新增一座,至今已建置500座電池交換站。   而隨著充電技術的進步與價位下降,充換電站數量也並非一成不變,未來充電時間可望從2小時縮短為20分鐘,屆時充電站數量將可望增加,未來不一定都是Gogoro的天下。日前內政部建築法規也已規定各停車空間須預留充電線路,公告後即可開放設立,民眾也能為私人車位設置充電站,而加油站、收費停車場、車站或是公共設備亦可設立。   不過目前台灣電動機車的趨勢仍然以換電為主,在Gogoro的布建計畫中,Gogoro希望大都市未來平均1公里就會有1座換電站,截至去年九月底,已累積600萬電池交換次數,並減少8,800噸二氧化碳排放量。   但交換電池本身即是個燒錢的策略,電池交換站雖然快速,但成本太高,根據資料,該公司在去年完成第三輪增資,募資近90億台幣的資金,總計超過144億新台幣,資金皆來自世界各大廠商。Gogoro創辦人陸學森曾表示,透過智慧能源網路與電池交換系統,Gogoro可為大都會提供擁抱永續能源的嶄新方式,並已在台灣、柏林與巴黎展現優良成果。(文/DaisyChuang)   (首圖來源:)

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

    【其他文章推薦】

    ※為什麼 USB CONNECTOR 是電子產業重要的元件?

    收購3c,收購IPHONE,收購蘋果電腦-詳細收購流程一覽表

    網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想要讓你的商品在網路上成為最夯、最多人討論的話題?

    ※高價收購3C產品,價格不怕你比較

    ※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

  • 中國發布新電動車計畫,拚2020年智慧新車佔比達5成

    中國發布新電動車計畫,拚2020年智慧新車佔比達5成

      根據中國國家發展和改革委員會1月5日發布的《智能汽車創新發展戰略》(徵求意見稿)當中第二項「戰略綱領」所提到的「戰略願景」,到2020年中國標準智慧汽車的技術創新、產業生態、路網設施、法規標準、產品監管和訊息安全體系框架基本形成,智慧汽車新車佔比將達到50%;智慧道路交通系統建設取得積極進展,大城市、高速公路的車用無線通訊網路(LTE-V2X)覆蓋率將達到90%,北斗高精度時空服務實現全覆蓋。   發改委預期到2025年中國標準智慧汽車的技術創新、產業生態、路網設施、法規標準、產品監管和訊息安全體系將全面形成:新車基本實現智慧化,高級別智慧汽車實現規模化應用,「人–車–路–雲」實現高度協同,新一代車用無線通訊網路(5G-V2X)基本滿足智慧汽車發展需要;2035年中國標準智慧汽車將可享譽全球,率先建成智慧汽車強國,全民共享「安全、高效、綠色、文明」的智慧汽車社會。   根據上述徵求意見稿的定義,智慧汽車通常也被稱為智慧網聯汽車、自動駕駛汽車、無人駕駛汽車,是指通過搭載先進感測器、控制器、執行器等裝置,運用訊息通訊、互聯網、大數據、雲計算、人工智慧(AI)等新技術,具有部分或完全自動駕駛功能,由單純交通運輸工具逐步向智慧移動空間轉變的新一代汽車。   新華網1月3日引述新京報報導,由中關村京西建設發展有限公司負責統籌規劃建設的「中關村人工智慧科技園」規劃用地面積54.87公頃,涵蓋超高速大數據、雲端運算、生物識別、深度學習等產業,目標是建成具有全球影響力的人工智慧科技創新中心。這座園區計劃推行5G通訊服務、並建設專有超算中心和專業雲,同時將推動北京市門頭溝區成為智慧駕駛先行先試示範區。   中國發改委於去年11月27日印發《增強製造業核心競爭力:三年行動計畫(2018至2020年)》通知,強調要加快發展先進製造業,推動互聯網、大數據、人工智慧和實體經濟深度融合,突破製造業重點領域關鍵技術實現產業化。行動計畫點名軌道交通裝備、高端船舶和海洋工程裝備、智慧機器人、智慧汽車、現代農業機械、高端醫療器械和藥品、新材料、製造業智慧化、重大技術裝備等項目為重點領域。   中國新創公司BYTON 1月2日宣布,2018年1月7日拉斯維加斯消費電子展(CES)上將首度發布全新智慧電動車(見首圖)。除了語音識別、觸控、生物識別和必要的實體按鈕之外,BYTON的共享體驗顯示裝置還內建Air Touch感測器、讓前座與後座的乘客都能透過手勢去控制螢幕。值得一提的是,BYTON內建臉部辨識技術,車主、乘客無須拿出鑰匙就能開啟車門。   瑞典新創公司Uniti上個月發表名為「Uniti One」的自主駕駛電動車。Uniti One內建NVIDIA DRIVE PX自主駕駛平台、預計在2019年開始出貨,具有兩人座、四人座以及五人座選項。   (本文內容由授權使用。首圖來源:)

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

    【其他文章推薦】

    ※為什麼 USB CONNECTOR 是電子產業重要的元件?

    收購3c,收購IPHONE,收購蘋果電腦-詳細收購流程一覽表

    網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想要讓你的商品在網路上成為最夯、最多人討論的話題?

    ※高價收購3C產品,價格不怕你比較

    ※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

  • 區塊鏈概念股迅雷股價两天大漲超145% 周一漲幅回落

    區塊鏈概念股迅雷股價两天大漲超145% 周一漲幅回落

      網易科技訊,10 月 29 日消息,區塊鏈概念股迅雷周一一度漲超 41%,收盤漲 18.26%,報收於 5.70 美元,两天漲幅超 145%。

      目前迅雷總市值 3.85 億美元。

      雖然迅雷股價两天內大漲,但是在去年 9 月,其股價仍高於 7 美元。而在 2017 年 11 月,迅雷股價創造過 27 美元的歷史記錄。

      人民日報昨日評論稱,應防止利用區塊鏈發行虛擬貨幣、炒作空氣幣等行為。

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

    收購3c,收購IPHONE,收購蘋果電腦-詳細收購流程一覽表

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

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

    ※公開收購3c價格,不怕被賤賣!

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

  • 為了孕育恆星,銀河系正在“變胖”

    為了孕育恆星,銀河系正在“變胖”

      眾所周知,如果一個人攝入的能量高於消耗的能量,身體就可能發胖,反之則會消瘦。測量人的體重增減只需一台秤而已。

      而浩瀚宇宙中的星系,特別是人類生存的銀河系,處於怎樣的變化之中,卻是困擾全球天文學家的重大難題。日前,一個由歐洲航天局天文學家安德魯·福克斯博士領銜的國際研究團隊在《天體物理學報》上撰文指出,銀河系吸入的氣體比呼出的氣體質量更大,處於“發胖”的過程中。

      那麼,銀河系的“呼吸”和質量變化背後有怎樣的奧秘?這種“發胖”將給銀河系帶來哪些影響?

      氣體物質交換 激活“一池春水”

      銀河系中不斷有氣體被“吹”出,但這些氣體還會重新被“吸”回,落到銀河繫上。這種“呼吸”意味着什麼?

      “這是恆星的誕生與死亡所帶來的氣體塵埃物質循環。”中國科學院上海天文台副研究員左文文在接受科技日報記者採訪時表示,恆星從銀盤中的氣體分子云中坍縮形成。恆星演化過程中的星風,以及大質量恆星演化到生命晚期發生的超新星爆炸,均會將大部分物質向外拋散,並向周圍的星際物質發射激波,形成一個由膨脹的氣體和塵埃構成的殼狀結構,即超新星遺迹。

      “恆星可視為源於塵埃,死亡時又歸於塵埃。”左文文說。

      恆星從生到死的整個生命周期成就了一次大尺度的搬運——將銀盤中的氣體塵埃物質向銀河系更外圍的銀暈中轉移。而且,恆星的一生積攢了大量的金屬元素。天文學中通常把比氦元素原子數大的元素均稱作金屬元素,這些金屬元素就像是一顆恆星兢兢業業地工作——努力地燃燒自己,奮鬥一輩子攢下的財富。它在日常生活中偶爾會“消費”,即通過星風現象拋出一部分物質;更多的是在大質量恆星走向滅亡的那一刻,它窮極一生積攢的“家當”,拋散四射,豐富了整個星系的元素組成,也點燃了下一代恆星生命起源的星星之火。

      隨着時間的推移,銀暈中的氣體塵埃物質會逐漸聚集在一起,重力將導致這些氣體團塊落回銀盤,開始下一輪恆星形成。

      恆星的死亡造就了新恆星的誕生,終點即是起點。周而復始,“向死而生”。銀河系也在無數個恆星的“獻祭”中完成了與周圍環境的氣體物質交換,就像一個湖泊,裏面是一池活水。

      高速分子云 標記“流動人口”

      那麼,銀河系這個大湖泊是在“漲水”還是在“泄水”?很多研究人員都想找到答案。

      此次研究給出的答案是前者,即氣體入流大於外流。

      該項研究利用哈勃太空望遠鏡的紫外波段數據,研究了 187 個高速分子云,根據吸收線相對於靜止參考系波長的移動,測定出它們在銀河系標準靜止參考系的速度,分類成入流的高速分子云和外流的高速分子云。通過計算,研究人員估計流入率為每年 0.53±0.17 倍太陽質量,流出率為每年 0.16±0.06 倍太陽質量,表明目前銀河系處在入流主導的時期。

      入流的氣體來源於哪裡?左文文指出,銀河系的引力有可能將部分星系際介質拖拽進來,也可能會從它的衛星星系拖拽一些氣體物質過來。

      科技日報記者注意到,該研究的主要對象是高速分子云。銀河系中氣體塵埃無數,為何研究人員單單瞄向了高速分子云?

      左文文提到,恆星與恆星之間有星際介質,星系與星系之間有星系際介質。星系並不是一個有着密閉邊界的系統。

      因此,沒有任何一種氣體會給自己主動貼上“外來者”或“本地人”的標籤。那麼,研究人員如何界定哪些氣體是外流或入流的“流動人口”?哪些又是銀河系內“長居”的“常住人口”?解決這些問題的切入點就是高速分子云。

      通常,銀盤中的“常住”氣體會與銀盤的旋轉速度一致。而高速分子云中氣體的移動速度要快於銀盤的旋轉速度,這意味着它們很可能就是入流或外流氣體的一種。再觀測分子云的速度走向,分析它是向著銀盤移動還是遠離銀盤移動,即可判斷該分子云是銀河系吸入的還是呼出的氣體。

      當然,也有學者指出,該研究忽略了本就存在於銀盤中的高速氣體結構,如費米氣泡等,這些銀盤中已有的結構無疑會給實驗帶來誤差。

      左文文也表示,該研究僅基於溫度較低(約 10000 開爾文)的氣體雲塊,給出的每年入流、外流的氣體質量均是下限,還需要有更多數據才能得到更確切的結果。

      呼吸的意義 調控恆星生命周期

      “恆星的形成會受到氣體入流與外流之間關係的調節。所以研究氣體循環過程,對於研究恆星形成、星系演化有很重要的作用。”左文文表示,銀河系是我們所居住的星系,擁有相對來說更豐富的觀測數據去研究氣體循環問題。

      也許很多人都會好奇,如果銀河系一直處於氣體入流多於外流的狀態,可能會怎樣?

      “內流多於外流,表明星系會累積更多的氣體。銀河系提供了恆星產生所需的原料——氣體、塵埃,有助於後續的恆星形成。”左文文表示,相反,如果星系中氣體外流一直多於內流,總有一天,恆星形成的原材料會損失殆盡,星系中便再沒有新恆星形成了。事實上,雖然入流和外流決定了一個星系是否會有持續的恆星形成,但還要關注兩者差距有多大以及這種情況持續時間有多長。

      2018 年日本東北大學的天文學家在《自然》雜誌撰文指出,銀河系在兩次恆星形成的“嬰兒潮”之間經歷了一個持續了數十億年的休眠期,實際上是在“死亡”后“復活”了,而這一現象與星系的氣體循環密不可分。

      根據這一研究,銀河系早期吸入大量寒冷氣體,開始形成第一代恆星。大約在 70 億年前,恆星坍塌爆炸產生的衝擊波將星系內氣體加熱到高溫。這導致寒冷氣體停止流入銀河系,恆星的形成也隨之停止。隨着時間的推移,銀河系的高溫氣體逐漸輻射冷卻,並在 50 億年前開始吸入新的寒冷氣體。這導致了包括太陽在內的第二代恆星的形成。更重要的是,其他研究表明,銀河系的鄰居“仙女座”星系可能也經歷過類似的歷程。這表明大質量的旋渦星系往往會出現形成恆星的“休眠期”,而較小的星系則不會。

      事實上,星系“呼吸”的概念也適用於恆星甚至行星等宇宙中更小的系統。相比銀河系的“增重”,太陽和地球都在減重。根據美國國家航空航天局(NASA)和麻省理工學院的研究,太陽每年喪失 1324.5 萬億噸的質量,地球每年減輕 1 到 5 萬噸。

      正如今日宇宙(Universe Today)網站所寫:“無論我們談論的是行星、恆星還是星系,它們都在經歷出生、生存和死亡。在這期間,他們或許會增重或減重幾磅。生命的循環,便在宇宙的尺度上展開。”

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

    ※為什麼 USB CONNECTOR 是電子產業重要的元件?

    收購3c,收購IPHONE,收購蘋果電腦-詳細收購流程一覽表

    網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想要讓你的商品在網路上成為最夯、最多人討論的話題?

    ※高價收購3C產品,價格不怕你比較

    ※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

  • 一文帶你深入了解 redis 複製技術及主從架構

    一文帶你深入了解 redis 複製技術及主從架構

    主從架構可以說是互聯網必備的架構了,第一是為了保證服務的高可用,第二是為了實現讀寫分離,你可能熟悉我們常用的 MySQL 數據庫的主從架構,對於我們 redis 來說也不意外,redis 數據庫也有各種各樣的主從架構方式,在主從架構中會涉及到主節點與從節點之間的數據同步,這個數據同步的過程在 redis 中叫做複製,這在篇文章中,我們詳細的聊一聊 redis 的複製技術和主從架構 ,本文主要有以下內容:

    • 主從架構環境搭建
      • 主從架構的建立方式
      • 主從架構的斷開
    • 複製技術的原理
      • 數據同步過程
      • 心跳檢測
    • 主從拓撲架構
      • 一主一從
      • 一主多從
      • 樹狀結構

    主從環境搭建

    redis 的實例在默認的情況下都是主節點,所以我們需要修改一些配置來搭建主從架構,redis 的主從架構搭建還是比較簡單的,redis 提供了三種方式來搭建主從架構,在後面我們將就介紹,在介紹之前我們要先了解主從架構的特性:在主從架構中有一個主節點(master)和最少一個從節點(slave),並且數據複製是單向的,只能從主節點複製到從節點,不能由從節點到主節點。

    主從架構的建立方式

    主從架構的建立有以下三種方式:

    • 在 Redis.conf 配置文件中加入 slaveof {masterHost} {masterPort} 命令,隨 Redis 實例的啟動生效
    • 在 redis-server 啟動命令后加入 –slaveof {masterHost} {masterPort} 參數
    • 在 redis-cli 交互窗口下直接使用命令:slaveof {masterHost} {masterPort}

    上面三種方式都可以搭建 Redis 主從架構,我們以第一種方式來演示,其他兩種方式自行嘗試,由於是演示,所以就在本地啟動兩個 Redis 實例,並不在多台機器上啟動 redis 的實例了,我們準備一個端口 6379 的主節點實例,準備一個端口 6480 從節點的實例,端口 6480 的 redis 實例配置文件取名為 6480.conf 並且在裏面添加 slaveof 語句,在配置文件最後加入如下一條語句

    slaveof 127.0.0.1 6379

    分別啟動兩個 redis 實例,啟動之後他們會自動建立主從關係,關於這背後的原理,我們後面在詳細的聊一聊,先來驗證一下我們的主從架構是否搭建成功,我們先在 6379 master 節點上新增一條數據:

    然後再 6480 slave 節點上獲取該數據:

    可以看出我們在 slave 節點上已經成功的獲取到了在 master 節點新增的值,說明主從架構已經搭建成功了,我們使用 info replication 命令來查看兩個節點的信息,先來看看主節點的信息

    可以看出 6379 端口的實例 role 為 master,有一個正在連接的實例,還有其他運行的信息,我們再來看看 6480 端口的 redis 實例信息

    可以看出兩個節點之間相互記錄著對象的信息,這些信息在數據複製時候將會用到。在這裡有一點需要說明一下,默認情況下 slave 節點是只讀的,並不支持寫入,也不建議開啟寫入,我們可以驗證一下,在 6480 實例上寫入一條數據

    127.0.0.1:6480> set x 3
    (error) READONLY You can't write against a read only replica.
    127.0.0.1:6480> 

    提示只讀,並不支持寫入操作,當然我們也可以修改該配置,在配置文件中 replica-read-only yes 配置項就是用來控制從服務器只讀的,為什麼只能只讀?因為我們知道複製是單向的,數據只能由 master 到 slave 節點,如果在 salve 節點上開啟寫入的話,那麼修改了 slave 節點的數據, master 節點是感知不到的,slave 節點的數據並不能複製到 master 節點上,這樣就會造成數據不一致的情況,所以建議 slave 節點只讀

    主從架構的斷開

    主從架構的斷開同樣是 slaveof 命令,在從節點上執行 slaveof no one 命令就可以與主節點斷開追隨關係,我們在 6480 節點上執行 slaveof no one 命令

    127.0.0.1:6480> slaveof no one
    OK
    127.0.0.1:6480> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:a54f3ba841c67762d6c1e33456c97b94c62f6ac0
    master_replid2:e5c1ab2a68064690aebef4bd2bd4f3ddfba9cc27
    master_repl_offset:4367
    second_repl_offset:4368
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:4367
    127.0.0.1:6480> 

    執行完 slaveof no one 命令之後,6480 節點的角色立馬恢復成了 master ,我們再來看看時候還和 6379 實例連接在一起,我們在 6379 節點上新增一個 key-value

    127.0.0.1:6379> set y 3
    OK

    在 6480 節點上 get y

    127.0.0.1:6480> get y
    (nil)
    127.0.0.1:6480> 

    在 6480 節點上獲取不到 y ,因為 6480 節點已經跟 6379 節點斷開的聯繫,不存在主從關係了,slaveof 命令不僅能夠斷開連接,還能切換主服務器,使用命令為 slaveof {newMasterIp} {newMasterPort},我們讓 6379 成為 6480 的從節點, 在 6379 節點上執行 slaveof 127.0.0.1 6480 命令,我們在來看看 6379 的 info replication

    127.0.0.1:6379> info replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6480
    master_link_status:up
    master_last_io_seconds_ago:2
    master_sync_in_progress:0
    slave_repl_offset:4367
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:99624d4b402b5091552b9cb3dd9a793a3005e2ea
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:4367
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:4368
    repl_backlog_histlen:0
    127.0.0.1:6379> 

    6379 節點的角色已經是 slave 了,並且主節點的是 6480 ,我們可以再看看 6480 節點的 info replication

    127.0.0.1:6480> info replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=127.0.0.1,port=6379,state=online,offset=4479,lag=1
    master_replid:99624d4b402b5091552b9cb3dd9a793a3005e2ea
    master_replid2:a54f3ba841c67762d6c1e33456c97b94c62f6ac0
    master_repl_offset:4479
    second_repl_offset:4368
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:4479
    127.0.0.1:6480> 

    在 6480 節點上有 6379 從節點的信息,可以看出 slaveof 命令已經幫我們完成了主服務器的切換。

    複製技術的原理

    redis 的主從架構好像很簡單一樣,我們就執行了一條命令就成功搭建了主從架構,並且數據複製也沒有問題,使用起來確實簡單,但是這背後 redis 還是幫我們做了很多的事情,比如主從服務器之間的數據同步、主從服務器的狀態檢測等,這背後 redis 是如何實現的呢?接下來我們就一起看看

    數據複製原理

    我們執行完 slaveof 命令之後,我們的主從關係就建立好了,在這個過程中, master 服務器與 slave 服務器之間需要經歷多個步驟,如下圖所示:

    slaveof 命令背後,主從服務器大致經歷了七步,其中權限驗證這一步不是必須的,為了能夠更好的理解這些步驟,就以我們上面搭建的 redis 實例為例來詳細聊一聊各步驟。

    1、保存主節點信息

    在 6480 的客戶端向 6480 節點服務器發送 slaveof 127.0.0.1 6379 命令時,我們會立馬得到一個 OK

    127.0.0.1:6480> slaveof 127.0.0.1 6379
    OK
    127.0.0.1:6480> 

    這時候數據複製工作並沒有開始,數據複製工作是在返回 OK 之後才開始執行的,這時候 6480 從節點做的事情是將給定的主服務器 IP 地址 127.0.0.1 以及端口 6379 保存到服務器狀態的 masterhost 屬性和 masterport 屬性裏面

    2、建立 socket 連接

    在 slaveof 命令執行完之後,從服務器會根據命令設置的 IP 地址和端口,跟主服務器創建套接字連接, 如果從服務器能夠跟主服務器成功的建立 socket 連接,那麼從服務器將會為這個 socket 關聯一個專門用於處理複製工作的文件事件處理器,這個處理器將負責後續的複製工作,比如接受全量複製的 RDB 文件以及服務器傳來的寫命令。同樣主服務器在接受從服務器的 socket 連接之後,將為該 socket 創建一個客戶端狀態,這時候的從服務器同時具有服務器和客戶端兩個身份,從服務器可以向主服務器發送命令請求而主服務器則會向從服務器返回命令回復。

    3、發送 ping 命令

    從服務器與主服務器連接成功后,做的第一件事情就是向主服務器發送一個 ping 命令,發送 ping 命令主要有以下目的:

    • 檢測主從之間網絡套接字是否可用
    • 檢測主節點當前是否可接受處理命令

    在發送 ping 命令之後,正常情況下主服務器會返回 pong 命令,接受到主服務器返回的 pong 回復之後就會進行下一步工作,如果沒有收到主節點的 pong 回復或者超時,比如網絡超時或者主節點正在阻塞無法響應命令,從服務器會斷開複製連接,等待下一次定時任務的調度。

    4、身份驗證

    從服務器在接收到主服務器返回的 pong 回復之後,下一步要做的事情就是根據配置信息決定是否需要身份驗證:

    • 如果從服務器設置了 masterauth 參數,則進行身份驗證
    • 如果從服務器沒有設置 masterauth 參數,則不進行身份驗證

    在需要身份驗證的情況下,從服務器將就向主服務器發送一條 auth 命令,命令參數為從服務器 masterauth 選項的值,舉個例子,如果從服務器的配置里將 masterauth 參數設置為:123456,那麼從服務器將向主服務器發送 auth 123456 命令,身份驗證的過程也不是一帆風順的,可能會遇到以下幾種情況:

    • 從服務器通過 auth 命令發送的密碼與主服務器的 requirepass 參數值一致,那麼將繼續進行後續操作,如果密碼不一致,主服務將返回一個 invalid password 錯誤
    • 如果主服務器沒有設置 requirepass 參數,那麼主服務器將返回一個 no password is set 錯誤

    所有的錯誤情況都會令從服務器中止當前的複製工作,並且要從建立 socket 開始重新發起複制流程,直到身份驗證通過或者從服務器放棄執行複製為止

    5、發送端口信息

    在身份驗證通過後,從服務器將執行 REPLCONF listening 命令,向主服務器發送從服務器的監聽端口號,例如在我們的例子中從服務器監聽的端口為 6480,那麼從服務器將向主服務器發送 REPLCONF listening 6480 命令,主服務器接收到這個命令之後,會將端口號記錄在從服務器所對應的客戶端狀態的 slave_listening_port 屬性了,也就是我們在 master 服務器的 info replication 裏面看到的 port 值。

    6、數據複製

    數據複製是最複雜的一塊了,由 psync 命令來完成,從服務器會向主服務器發送一個 psync 命令來進行數據同步,在 redis 2.8 版本以前使用的是 sync 命令,除了命令不同之外,在複製的方式上也有很大的不同,在 redis 2.8 版本以前使用的都是全量複製,這對主節點和網絡會造成很大的開銷,在 redis 2.8 版本以後,數據同步將分為全量同步和部分同步。

    • 全量複製:一般用於初次複製場景,不管是新舊版本的 redis 在從服務器第一次與主服務連接時都將進行一次全量複製,它會把主節點的全部數據一次性發給從節點,當數據較大時,會對主節點和網絡造成很大的開銷,redis 的早期版本只支持全量複製,這不是一種高效的數據複製方式

    • 部分複製:用於處理在主從複製中因網絡閃斷等原因造成的數據丟失 場景,當從節點再次連上主節點后,如果條件允許,主節點會補發丟失數據 給從節點。因為補發的數據遠遠小於全量數據,可以有效避免全量複製的過高開銷,部分複製是對老版複製的重大優化,有效避免了不必要的全量複製操作

    redis 之所以能夠支持全量複製和部分複製,主要是對 sync 命令的優化,在 redis 2.8 版本以後使用的是一個全新的 psync 命令,命令格式為:psync {runId} {offset},這兩個參數的意義:

    • runId:主節點運行的id
    • offset:當前從節點複製的數據偏移量

    也許你對上面的 runid、offset 比較陌生,沒關係,我們先來看看下面三個概念:

    1、複製偏移量

    參与複製的主從節點都會分別維護自身複製偏移量:主服務器每次向從服務器傳播 N 個字節的數據時,就將自己的偏移量的值加上 N,從服務器每次接收到主服務器傳播的 N個字節的數據時,將自己的偏移量值加上 N。通過對比主從服務器的複製偏移量,就可以知道主從服務器的數據是否一致,如果主從服務器的偏移量總是相同,那麼主從數據一致,相反,如果主從服務器兩個的偏移量並不相同,那麼說明主從服務器並未處於數據一致的狀態,比如在有多個從服務器時,在傳輸的過程中某一個服務器離線了,如下圖所示:

    由於從服務器A 在數據傳輸時,由於網絡原因掉線了,導致偏移量與主服務器不一致,那麼當從服務器A 重啟並且與主服務器連接成功后,重新向主服務器發送 psync 命令,這時候數據複製應該執行全量複製還是部分複製呢?如果執行部分複製,主服務器又如何補償從服務器A 在斷線期間丟失的那部分數據呢?這些問題的答案都在複製積壓緩衝區裏面

    2、複製積壓緩衝區

    複製積壓緩衝區是保存在主節點上的一個固定長度的隊列,默認大小為 1MB,當主節點有連接的從節點(slave)時被創建,這時主節點(master) 響應寫命令時,不但會把命令發送給從節點,還會寫入複製積壓緩衝區,如下圖所示:

    因此,主服務器的複製積壓緩衝區裏面會保存着一部分最近傳播的寫命令,並且複製積壓緩衝區會為隊列中的每個字節記錄相應的複製偏移量。所以當從服務器重新連上主服務器時,從服務器通過 psync 命令將自己的複製偏移量 offset 發送給主服務器,主服務器會根據這個複製偏移量來決定對從服務器執行何種數據同步操作:

    • 如果從服務器的複製偏移量之後的數據仍然存在於複製積壓緩衝區裏面,那麼主服務器將對從服務器執行部分複製操作
    • 如果從服務器的複製偏移量之後的數據不存在於複製積壓緩衝區裏面,那麼主服務器將對從服務器執行全量複製操作

    3、服務器運行ID

    每個 Redis 節點啟動后都會動態分配一個 40 位的十六進制字符串作為運行 ID,運行 ID 的主要作用是用來唯一識別 Redis 節點,我們可以使用 info server 命令來查看

    127.0.0.1:6379> info server
    # Server
    redis_version:5.0.5
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:2ef1d58592147923
    redis_mode:standalone
    os:Linux 3.10.0-957.27.2.el7.x86_64 x86_64
    arch_bits:64
    multiplexing_api:epoll
    atomicvar_api:atomic-builtin
    gcc_version:4.8.5
    process_id:25214
    run_id:7b987673dfb4dfc10dd8d65b9a198e239d20d2b1
    tcp_port:6379
    uptime_in_seconds:14382
    uptime_in_days:0
    hz:10
    configured_hz:10
    lru_clock:14554933
    executable:/usr/local/redis-5.0.5/src/./redis-server
    config_file:/usr/local/redis-5.0.5/redis.conf
    127.0.0.1:6379> 

    這裏面有一個run_id 字段就是服務器運行的ID

    了解這幾個概念之後,我們一起來看看 psync 命令的運行流程,psync 命令運行流程如下圖所示:

    psync 命令的邏輯比較簡單,整個流程分為兩步:

    1、從節點發送 psync 命令給主節點,參數 runId 是當前從節點保存的主節點運行ID,參數offset是當前從節點保存的複製偏移量,如果是第一次參与複製則默認值為 -1。

    2、主節點接收到 psync 命令之後,會向從服務器返回以下三種回復中的一種:

    • 回復 +FULLRESYNC {runId} {offset}:表示主服務器將與從服務器執行一次全量複製操作,其中 runid 是這個主服務器的運行 id,從服務器會保存這個id,在下一次發送 psync 命令時使用,而 offset 則是主服務器當前的複製偏移量,從服務器會將這個值作為自己的初始化偏移量
    • 回復 +CONTINUE:那麼表示主服務器與從服務器將執行部分複製操作,從服務器只要等着主服務器將自己缺少的那部分數據發送過來就可以了
    • 回復 +ERR:那麼表示主服務器的版本低於 redis 2.8,它識別不了 psync 命令,從服務器將向主服務器發送 sync 命令,並與主服務器執行全量複製

    7、命令持續複製

    當主節點把當前的數據同步給從節點后,便完成了複製的建立流程。但是主從服務器並不會斷開連接,因為接下來主節點會持續地把寫命令發送給從節點,保證主從數據一致性。

    經過上面 7 步就完成了主從服務器之間的數據同步,由於這篇文章的篇幅比較長,關於全量複製和部分複製的細節就不介紹了,全量複製就是將主節點的當前的數據生產 RDB 文件,發送給從服務器,從服務器再從本地磁盤加載,這樣當文件過大時就需要特別大的網絡開銷,不然由於數據傳輸比較慢會導致主從數據延時較大,部分複製就是主服務器將複製積壓緩衝區的寫命令直接發送給從服務器。

    心跳檢測

    心跳檢測是發生在主從節點在建立複製后,它們之間維護着長連接並彼此發送心跳命令,便以後續持續發送寫命令,主從心跳檢測如下圖所示:

    主從節點彼此都有心跳檢測機制,各自模擬成對方的客戶端進行通信,主從心跳檢測的規則如下:

    • 主節點默認每隔 10 秒對從節點發送 ping 命令,判斷從節點的存活性和連接狀態。可通過修改 redis.conf 配置文件裏面的 repl-ping-replica-period 參數來控制發送頻率
    • 從節點在主線程中每隔 1 秒發送 replconf ack {offset} 命令,給主節點 上報自身當前的複製偏移量,這條命令除了檢測主從節點網絡之外,還通過發送複製偏移量來保證主從的數據一致

    主節點根據 replconf 命令判斷從節點超時時間,體現在 info replication 統 計中的 lag 信息中,我們在主服務器上執行 info replication 命令:

    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=127.0.0.1,port=6480,state=online,offset=25774,lag=0
    master_replid:c62b6621e3acac55d122556a94f92d8679d93ea0
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:25774
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:25774
    127.0.0.1:6379> 

    可以看出 slave0 字段的值最後面有一個 lag,lag 表示與從節點最後一次通信延遲的秒數,正常延遲應該在 0 和 1 之間。如果超過 repl-timeout 配置的值(默認60秒),則判定從節點下線並斷開複製客戶端連接,如果從節點重新恢復,心跳檢測會繼續進行。

    主從拓撲架構

    Redis的主從拓撲結構可以支持單層或多層複製關係,根據拓撲複雜性可以分為以下三種:一主一從、一主多從、樹狀主從架構

    一主一從結構

    一主一從結構是最簡單的複製拓撲結構,我們前面搭建的就是一主一從的架構,架構如圖所示:

    一主一從架構用於主節點出現宕機時從節點 提供故障轉移支持,當應用寫命令併發量較高且需要持久化時,可以只在從節點上開啟 AOF,這樣既保證數據安全性同時也避免了持久化對主節點的性能干擾。但是這裡有一個坑,需要你注意,就是當主節點關閉持久化功能時, 如果主節點脫機要避免自動重啟操作。因為主節點之前沒有開啟持久化功能自動重啟后數據集為空,這時從節點如果繼續複製主節點會導致從節點數據也被清空的情況,喪失了持久化的意義。安全的做法是在從節點上執行 slaveof no one 斷開與主節點的複製關係,再重啟主節點從而避免這一問題

    一主多從架構

    一主多從架構又稱為星形拓撲結構,一主多從架構如下圖所示:

    一主多從架構可以實現讀寫分離來減輕主服務器的壓力,對於讀佔比較大的場景,可以把讀命令發送到 從節點來分擔主節點壓力。同時在日常開發中如果需要執行一些比較耗時的讀命令,如:keys、sort等,可以在其中一台從節點上執行,防止慢查詢對主節點造成阻塞從而影響線上服務的穩定性。對於寫併發量較高的場景,多個從節點會導致主節點寫命令的多次發送從而過度消耗網絡帶寬,同時也加重了主節點的負載影響服務穩定性。

    樹狀主從架構

    樹狀主從架構又稱為樹狀拓撲架構,樹狀主從架構如下圖所示:

    樹狀主從架構使得從節點不但可以複製主節 數據,同時可以作為其他從節點的主節點繼續向下層複製。解決了一主多從架構中的不足,通過引入複製中 間層,可以有效降低主節點負載和需要傳送給從節點的數據量。如架構圖中,數據寫入節點A 後會同步到 B 和 C節點,B節點再把數據同步到 D 和 E節點,數據實現了一層一層的向下複製。當主節點需要掛載多個從節點時為了避免對主節點的性能干擾,可以採用樹狀主從結構降低主節點壓力。

    最後

    目前互聯網上很多大佬都有 Redis 系列教程,如有雷同,請多多包涵了。原創不易,碼字不易,還希望大家多多支持。若文中有所錯誤之處,還望提出,謝謝。

    歡迎掃碼關注微信公眾號:「平頭哥的技術博文」,和平頭哥一起學習,一起進步。

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

    ※為什麼 USB CONNECTOR 是電子產業重要的元件?

    收購3c,收購IPHONE,收購蘋果電腦-詳細收購流程一覽表

    網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想要讓你的商品在網路上成為最夯、最多人討論的話題?

    ※高價收購3C產品,價格不怕你比較

    ※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!