日本推翻商業捕鯨禁令失敗 國際通過護鯨新決議

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

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

【其他文章推薦】

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

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

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

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

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

要吸管請「開金口」 加州餐廳明年起不主動提供

摘錄自2018年9月21日蘋果日報美國加州報導

美聯社報導,加州州長布朗(Jerry Brown)簽署通過法案,明年起禁止州內餐廳主動提供顧客塑膠吸管服務,首開全美先例。餐廳業者若不配合將先予以警告,兩次警告後開罰,每年最高300美元(約9,200台幣),由州內衛生人員負責不定時執行稽查。不過,此法僅適用於正式、有服務生點餐的餐廳,速食業者不再此限。儘管不是直接禁止,部分共和黨人仍批評這項新法「管太多」。

民主黨的布朗將環保議題列為優先施政考量。他指,每年大量塑膠垃圾流入海中,殺死鯨魚和魚類,污染最終進到民眾的食物和供水:「我們對一次性便利用具的迷戀,將招致災難性的後果。所有形式的塑膠製品,塑膠吸管、寶特瓶、包裝、塑膠袋等,都在使地球窒息。」

同天,布朗簽署通過另項法案,規定販售兒童餐的各級餐廳,都必須將菜單飲料預設為牛奶和開水。兩項法案皆從明年1月1日開始生效。

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

【其他文章推薦】

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

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

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

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

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

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

一文帶你深入了解 Redis 的持久化方式及其原理

Redis 提供了兩種持久化方式,一種是基於快照形式的 RDB,另一種是基於日誌形式的 AOF,每種方式都有自己的優缺點,本文將介紹 Redis 這兩種持久化方式,希望閱讀本文後你對 Redis 的這兩種方式有更加全面、清晰的認識。

RDB 快照方式持久化

先從 RDB 快照方式聊起,RDB 是 Redis 默認開啟的持久化方式,並不需要我們單獨開啟,先來看看跟 RDB 相關的配置信息:

################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#   save ""
# 自動生成快照的觸發機制 中間的是時間,單位秒,後面的是變更數據 60 秒變更 10000 條數據則自動生成快照
save 900 1
save 300 10
save 60 10000

# 生成快照失敗時,主線程是否停止寫入
stop-writes-on-bgsave-error yes

# 是否採用壓縮算法存儲
rdbcompression yes

# 數據恢復時是否檢測 RDB文件有效性
rdbchecksum yes

# The filename where to dump the DB
# RDB 快照生成的文件名稱
dbfilename dump.rdb

# 快照生成的路徑 AOF 也是存放在這個路徑下面
dir .

關於 RDB 相關配置信息不多,需要我們調整的就更少了,我們只需要根據自己的業務量修改生成快照的機制和文件存放路徑即可。

RDB 有兩種持久化方式:手動觸發自動觸發手動觸發使用以下兩個命令:

  • save:會阻塞當前 Redis 服務器響應其他命令,直到 RDB 快照生成完成為止,對於內存 比較大的實例會造成長時間阻塞,所以線上環境不建議使用

  • bgsave:Redis 主進程會 fork 一個子進程,RDB 快照生成有子進程來負責,完成之後,子進程自動結束,bgsave 只會在 fork 子進程的時候短暫的阻塞,這個過程是非常短的,所以推薦使用該命令來手動觸發

除了執行命令手動觸發之外,Redis 內部還存在自動觸發 RDB 的持久化機制,在以下幾種情況下 Redis 會自動觸發 RDB 持久化

  • 在配置中配置了 save 相關配置信息,如我們上面配置文件中的 save 60 10000 ,也可以把它歸類為“save m n”格式的配置,表示 m 秒內數據集存在 n 次修改時,會自動觸發 bgsave。

  • 在主從情況下,如果從節點執行全量複製操作,主節點自動執行 bgsave 生成 RDB 文件併發送給從節點

  • 執行 debug reload 命令重新加載 Redis 時,也會自動觸發 save 操作

  • 默認情況下執行 shutdown 命令時,如果沒有開啟 AOF 持久化功能則自動執行 bgsave

上面就是 RDB 持久化的方式,可以看出 save 命令使用的比較少,大多數情況下使用的都是 bgsave 命令,所以這個 bgsave 命令還是有一些東西,那接下來我們就一起看看 bgsave 背後的原理,先從流程圖開始入手:

bgsave 命令大概有以下幾個步驟:

  • 1、執行 bgsave 命令,Redis 主進程判斷當前是否存在正在執行的 RDB/AOF 子進程,如果存在, bgsave 命令直接返回不在往下執行。
  • 2、父進程執行 fork 操作創建子進程,fork 操作過程中父進程會阻塞,fork 完成後父進程將不在阻塞可以接受其他命令。
  • 3、子進程創建新的 RDB 文件,基於父進程當前內存數據生成臨時快照文件,完成後用新的 RDB 文件替換原有的 RDB 文件,並且給父進程發送 RDB 快照生成完畢通知

上面就是 bgsave 命令背後的一些內容,RDB 的內容就差不多了,我們一起來總結 RDB 持久化的優缺點,RDB 方式的優點

  • RDB 快照是某一時刻 Redis 節點內存數據,非常適合做備份,上傳到遠程服務器或者文件系統中,用於容災備份
  • 數據恢復時 RDB 要遠遠快於 AOF

有優點同樣存在缺點,RDB 的缺點有

  • RDB 持久化方式數據沒辦法做到實時持久化/秒級持久化。我們已經知道了 bgsave 命令每次運行都要執行 fork 操作創建子進程,屬於重量級操作,頻繁執行成本過高。
  • RDB 文件使用特定二進制格式保存,Redis 版本演進過程中有多個格式 的 RDB 版本,存在老版本 Redis 服務無法兼容新版 RDB 格式的問題

如果我們對數據要求比較高,每一秒的數據都不能丟,RDB 持久化方式肯定是不能夠滿足要求的,那 Redis 有沒有辦法滿足呢,答案是有的,那就是接下來的 AOF 持久化方式

AOF 持久化方式

Redis 默認並沒有開啟 AOF 持久化方式,需要我們自行開啟,在 redis.conf 配置文件中將 appendonly no 調整為 appendonly yes,這樣就開啟了 AOF 持久化,與 RDB 不同的是 AOF 是以記錄操作命令的形式來持久化數據的,我們可以查看以下 AOF 的持久化文件 appendonly.aof

*2
$6
SELECT
$1
0
*3
$3
set
$6
mykey1
$6
你好
*3
$3
set
$4
key2
$5
hello
*1
$8

大概就是長這樣的,具體的你可以查看你 Redis 服務器上的 appendonly.aof 配置文件,這也意味着我們可以在 appendonly.aof 文件中國修改值,等 Redis 重啟時將會加載修改之後的值。看似一些簡單的操作命令,其實從命令到 appendonly.aof 這個過程中非常有學問的,下面時 AOF 持久化流程圖:

在 AOF 持久化過程中有兩個非常重要的操作:一個是將操作命令追加到 AOF_BUF 緩存區,另一個是 AOF_buf 緩存區數據同步到 AOF 文件,接下來我們詳細聊一聊這兩個操作:

1、為什麼要將命令寫入到 aof_buf 緩存區而不是直接寫入到 aof 文件?

我們知道 Redis 是單線程響應,如果每次寫入 AOF 命令都直接追加到磁盤上的 AOF 文件中,這樣頻繁的 IO 開銷,Redis 的性能就完成取決於你的機器硬件了,為了提升 Redis 的響應效率就添加了一層 aof_buf 緩存層, 利用的是操作系統的 cache 技術,這樣就提升了 Redis 的性能,雖然這樣性能是解決了,但是同時也引入了一個問題,aof_buf 緩存區數據如何同步到 AOF 文件呢?由誰同步呢?這就是我們接下來要聊的一個操作:fsync 操作

2、aof_buf 緩存區數據如何同步到 aof 文件中?

aof_buf 緩存區數據寫入到 aof 文件是有 linux 系統去完成的,由於 Linux 系統調度機制周期比較長,如果系統故障宕機了,意味着一個周期內的數據將全部丟失,這不是我們想要的,所以 Linux 提供了一個 fsync 命令,fsync 是針對單個文件操作(比如這裏的 AOF 文件),做強制硬盤同步,fsync 將阻塞直到寫入硬盤完成后返回,保證了數據持久化,正是由於有這個命令,所以 redis 提供了配置項讓我們自行決定何時進行磁盤同步,redis 在 redis.conf 中提供了appendfsync 配置項,有如下三個選項:

# appendfsync always
appendfsync everysec
# appendfsync no
  • always:每次有寫入命令都進行緩存區與磁盤數據同步,這樣保證不會有數據丟失,但是這樣會導致 redis 的吞吐量大大下降,下降到每秒只能支持幾百的 TPS ,這違背了 redis 的設計,所以不推薦使用這種方式
  • everysec:這是 redis 默認的同步機制,雖然每秒同步一次數據,看上去時間也很快的,但是它對 redis 的吞吐量沒有任何影響,每秒同步一次的話意味着最壞的情況下我們只會丟失 1 秒的數據, 推薦使用這種同步機制,兼顧性能和數據安全
  • no:不做任何處理,緩存區與 aof 文件同步交給系統去調度,操作系統同步調度的周期不固定,最長會有 30 秒的間隔,這樣出故障了就會丟失比較多的數據。

這就是三種磁盤同步策略,但是你有沒有注意到一個問題,AOF 文件都是追加的,隨着服務器的運行 AOF 文件會越來越大,體積過大的 AOF 文件對 redis 服務器甚至是主機都會有影響,而且在 Redis 重啟時加載過大的 AOF 文件需要過多的時間,這些都是不友好的,那 Redis 是如何解決這個問題的呢?Redis 引入了重寫機制來解決 AOF 文件過大的問題。

3、Redis 是如何進行 AOF 文件重寫的?

Redis AOF 文件重寫是把 Redis 進程內的數據轉化為寫命令同步到新 AOF 文件的過程,重寫之後的 AOF 文件會比舊的 AOF 文件占更小的體積,這是由以下幾個原因導致的:

  • 進程內已經超時的數據不再寫入文件
  • 舊的 AOF 文件含有無效命令,如 del key1、hdel key2、srem keys、set a111、set a222等。重寫使用進程內數據直接生成,這樣新的AOF文件只保 留最終數據的寫入命令
  • 多條寫命令可以合併為一個,如:lpush list a、lpush list b、lpush list c可以轉化為:lpush list a b c。為了防止單條命令過大造成客戶端緩衝區溢 出,對於 list、set、hash、zset 等類型操作,以 64 個元素為界拆分為多條。

重寫之後的 AOF 文件體積更小了,不但能夠節約磁盤空間,更重要的是在 Redis 數據恢復時,更小體積的 AOF 文件加載時間更短。AOF 文件重寫跟 RDB 持久化一樣分為手動觸發自動觸發,手動觸發直接調用 bgrewriteaof 命令就好了,我們後面會詳細聊一聊這個命令,自動觸發就需要我們在 redis.conf 中修改以下幾個配置

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
  • auto-aof-rewrite-percentage:代表當前 AOF文件空間 (aof_current_size)和上一次重寫后 AOF 文件空間(aof_base_size)的比值,默認是 100%,也就是一樣大的時候
  • auto-aof-rewrite-min-size:表示運行 AOF 重寫時 AOF 文件最小體積,默認為 64MB,也就是說 AOF 文件最小為 64MB 才有可能觸發重寫

滿足了這兩個條件,Redis 就會自動觸發 AOF 文件重寫,AOF 文件重寫的細節跟 RDB 持久化生成快照有點類似,下面是 AOF 文件重寫流程圖:

AOF 文件重寫也是交給子進程來完成,跟 RDB 生成快照很像,AOF 文件重寫在重寫期間建立了一個 aof_rewrite_buf 緩存區來保存重寫期間主進程響應的命令,等新的 AOF 文件重寫完成后,將這部分文件同步到新的 AOF 文件中,最後用新的 AOF 文件替換掉舊的 AOF 文件。需要注意的是在重寫期間,舊的 AOF 文件依然會進行磁盤同步,這樣做的目的是防止重寫失敗導致數據丟失,

Redis 持久化數據恢復

我們知道 Redis 是基於內存的,所有的數據都存放在內存中,由於機器宕機或者其他因素重啟了就會導致我們的數據全部丟失,這也就是要做持久化的原因,當服務器重啟時,Redis 會從持久化文件中加載數據,這樣我們的數據就恢復到了重啟前的數據,在數據恢復這一塊Redis 是如何實現的?我們先來看看數據恢復的流程圖:

Redis 的數據恢複流程比較簡單,優先恢復的是 AOF 文件,如果 AOF 文件不存在時則嘗試加載 RDB 文件,為什麼 RDB 的恢復速度比 AOF 文件快,但是還是會優先加載 AOF 文件呢?我個人認為是 AOF 文件數據更全面並且 AOF 兼容性比 RDB 強,需要注意的是當存在 RDB/AOF 時,如果數據加載不成功,Redis 服務啟動會失敗。

最後

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

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

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

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

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

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

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

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

紐約氣候週活動 促緊急降低全球暖化

摘錄自2018年9月25日中央社報導

每年聯合國大會召開之際,多國元首和政府領袖同時舉行的「氣候週」今天(25日)開跑,他們敦促世界領袖緊急採取行動降低全球暖化。

波蘭12月將主辦聯合國氣候變化綱要公約第24次締約方會議(COP24),聯合國氣候首長艾斯皮諾薩(Patricia Espinosa)呼籲各國團結,支持2015年巴黎協定所訂規定,將全球暖化升溫限制在攝氏兩度以下。

艾斯皮諾薩表示,各國並未實現他們的承諾。並說:「各國目前依據巴黎協定做出的承諾,將使得全球溫度在2100年升高約三度。」

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

【其他文章推薦】

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

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

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

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

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

福特「Model E」向特斯拉與雪佛蘭宣戰!

福特(Ford)執行長 Mark Fields 於 4 月 28 日對外表示,福特正在開發能與特斯拉(Tesla) Model 3 與雪佛蘭(Chevrolet ) Bolt 純電動車匹敵的長程電動車,目標是要達到單次充電續航里程 200 英里,在越來越多車廠投入電動車製造的同時,福特打算「成為其中的佼佼者」,甚至是「坐上傲視群雄的位置」。此話一出,向電動車市場其他車廠宣戰的意味濃厚。

雖然 Fields 並未透露太多細節,但這還是福特高層第一次直接對外證實,公司正在研擬向特斯拉與雪佛蘭挑戰的電動車開發計畫。Fields 未提及確切的上市時間,僅表示該電動車將會取名為「Model E」,計畫將於 2019 年在福特本月初宣布要在墨西哥中部興建的新工廠進行組裝,該工廠預計於 2018 年投產。   有別於特斯拉 Model 3 及雪佛蘭 Bolt 為純電動車款,據研究公司 AutoForecast Solutions 指出,福特的 Model E 打算提供 3 種車型,包括油電混合動力車、插電式混合動力車與純電動車,且福特已經以 Model E 名稱申請商標註冊。   回溯至 2015 年 12 月,當時 Fields 曾對外宣布,福特將斥資 45 億美元推動電動車市場,要在 2020 年前,在產品陣容中,加入 13 款油電混合動力車或電動車型,且屆時福特所出產的車輛中,多達 40% 將會是電力驅動的車輛。   福特先前宣布將在 2017 年推出的電動車 Focus Electric 車型續航里程僅能達到 76 英里,即便將在今年秋季增加到 100 英里,不過,仍遠低於將於今年底推出的雪佛蘭 Bolt,以及預計 2 年內交車的特斯拉 Model 3 單次充電續航里程數。

(首圖來源: CC BY 2.0)

(本文授權轉載自《》─〈〉)

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

【其他文章推薦】

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

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

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

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

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

Model 3 接單爆量部分是膨風?Musk:重複訂單將取消

特斯拉(Tesla Motors)平價電動車「Model 3」3 月 31 日亮相一週就狂接了 32.5 萬筆訂單,執行長 Elon Musk 之後更於 4 月 22 日指稱 Model 3 已接獲近 40 萬筆訂單。   不過,許多人對此抱持懷疑態度,認為或許有顧客重複下單導致數據「膨風」,分析師 Anton Wahlman 上週更在 Seeking Alpha 網站發文宣稱,雖然特斯拉限制每人只能預購兩台 Model 3,但他個人卻已成功下了 20 筆訂單。   Yahoo! Finance 的新聞記者隨後也宣稱,只要以不同表格遞交多筆訂單,就能成功突破每人限購 2 台的限制。   Wahlman 宣稱,這意味著特斯拉接獲的 40 萬筆訂單有一部份也許來自投機客,Model 3 龐大的需求可能只是膨風。   對此,Musk 決定重新檢視顧客的下單狀況,並把多餘的訂單全部取消。MarketWatch 2 日報導,Musk 4 月 29 日透過 Twitter 指出,重複的訂單將被刪除,每位客戶都只限購 2 台,而所有訂單中僅有 5% 預購了 2 台 Model 3,因此不太可能有投機客。   儘管如此,投機客瘋狂預購 Model 3,仍代表這款車種深獲顧客期待,畢竟 Model 3 在還未亮相前,搶著掏錢預訂 Model 3 的粉絲們就已在實體門市外排起超長人龍,這樣的熱絡景象真的是前所未見。   現在特斯拉遇到的問題,應該不是需求疲軟、而是訂單太多。有分析師認為,特斯拉當前產能不足以應付爆量需求,未來可能得籌錢擴產、甚至打造第二座組裝廠。   CNBC、Forbes 4 月中報導,巴克萊分析師 Brian Johnson 表示,他估計特斯拉需要另行籌資 30 億美元,才能滿足如雪片飛來的訂單。他說,特斯拉訂單暴增,或許會以需要打造更多汽車和電池工廠為由,尋求額外資金。   從特斯拉生產情況看來,確實有擴產需要。今年第一季,特斯拉交車數量僅有 14,820 輛,低於預期的 16,000 輛。今年全年特斯拉預計交車 80,000~90,000 輛。這讓外界憂心忡忡,擔心該公司無法從小眾車廠,蛻變為大型公司。特斯拉的加州組裝工廠,以往為通用汽車(GM)和豐田(Toyota)的合資企業,年度產能達 50 萬輛,意味特斯拉仍有大幅增產空間,能加裝設備,生產 Model 3。    (本文內容由授權使用;首圖來源: CC BY 2.0)

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

【其他文章推薦】

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

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

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

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

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

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

遲到的故障公告:錯誤的緩存數據引發新版博客後台發布后的故障

10月18日晚上 22:00 ,我們對處於灰度發布階段的新版博客後台(Angular 8.2.7 + .NET Core 3.0)進行了一次發布操作,在發布後由於清除緩存 web api 的一個 bug 造成在發布后通過新版博客後台修改的博文無法訪問(404錯誤);在發現問題后,我們回退至發布之前的版本,但是由於 appsettings.Production.json 配置文件的不一致造成回退後的版本出現 500 錯誤;在修復配置文件問題后,在 docker swarm 集群上部署時又遭遇奇怪的容器健康檢查失敗的問題,多次部署后才成功,直至 23:00 左右才恢復正常。

非常抱歉,這次故障給使用新版博客後台的園友帶來了很大的麻煩,請您諒解。

在這次發布中包含一個比較大但卻沒有引起我們足夠重視的變更,原先在博客後台代碼中進行的清除 memcached 緩存(修改博文時清除對應的緩存)的操作改為調用 web api ,在實現清除緩存 web api 時由於沒有足夠重視在沒有寫集成測試覆蓋的情況下就發布了,從而沒有及時發現其中埋藏的一個 bug ,這個 bug 是由下面的 C# 代碼引起的:

await _cacheService.RemoveAsync(CacheKeyManager.GetBlogPost(blogId.Value, postId.Value));
var post = await blogPostService.GetCachedPostById(blogId.Value, postId.Value);            
//...
if (post.DisplayOnHomePage)
{
    await ClearHomePostsList(blogId.Value);
}
//..

上面的代碼中在清除所修改博文的緩存后,又獲取該博文進一步清除與該博文相關聯的緩存,調用 GetCachedPostById 方法時又創建了緩存,但由於實現時漏寫了 DTO 映射配置代碼,造成緩存的 BlogPostDto 字段值不完整從而 PostId 的值為 0 。在我們的緩存機制中,對於不存在的博文,會 new 一個空的 PostId 為 0 的 BlogPostDto 放入緩存,所以 PostId 為 0 的緩存數據都當作不存在的博文直接響應 404 ,故障因此而引發。

針對這次故障,在修掉 bug 代碼的同時我們將採取以下改進措施:

1)對從緩存中獲取的數據進行校驗並自動修復,這樣即使出現錯誤的緩存數據,也可以減少對業務的影響。

else if (blogPost.PostId != postId)
{
    blogPost = await GetBlogPostById(blogId, postId);
    await _cacheService.UpdateAsync(cacheKey, 3600, blogPost);
}

2)加強 Code Review

3)提高集成測試的覆蓋率

4)解決生產環境配置管理的問題

5)改用 k8s 部署生產環境

最近的新版博客後台發布故障暴露了我們在團隊開發能力上的落後,我們正在努力改進與提升,希望大家能夠諒解我們暫時的 low 。

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

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

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

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

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

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

【Elasticsearch 7 探索之路】(三)倒排索引

上一篇,我們介紹了 ES 文檔的基本 CURE 和批量操作。我們都知道倒排索引是搜索引擎非常重要的一種數據結構,什麼是倒排索引,倒排索引的原理是什麼。

1 索引過程

在講解倒排索引前,我們先了解索引創建,下圖是 Elasticsearch 中數據索引過程的流程。

從上圖可以看到,文檔未在 ES 中進行索引,而是 由 Analyzer 組件對其執行一些操作並將其拆分為 token/term。然後將這些術語作為倒排索引存儲在磁盤中。假設我們有兩個名為 name 和 age 字段,當要將文檔索引到 ES 時,Analyzers 組件 以某些定界符(有默認定界符,例如空格,句號等)將它們分割開獲取 token,再對每個 token 應用特定的過濾器。經過分析的這些標記稱為 term。然後將這些 term 針對該字段)存儲在倒排列表中。

2 倒排索引

2.1 正排與倒排索引

一般在我們閱讀圖書,我們會根據目錄快速定位想要閱讀的章節,過了一段時間,你想要的回顧之前某一個知識點,你發現從目錄難以查找到對應的地方,這時你可能就會從索引頁從去查找對應內容索引,從而找到頁碼。

搜索引擎其實跟我們的使用圖書很相似,下面我來對圖書和搜索引擎進行一個簡單的類比,來看一下搜素引擎中正排和倒排索引。

  • 圖書
    • 正排索引-目錄頁
    • 倒排索引-索引頁
  • 搜索引擎
    • 正排索引-文檔 Id 到文檔內容和單詞的關聯
    • 倒排索引-單詞到文檔 Id 的關係

2.2 倒排索引的核心組成

舉個例子,假設我們有 3 個文檔:

Doc 1:breakthrough drug for schizophrenia

Doc 2:new schizophrenia drug 

Doc 3:new approach for treatment of schizophrenia

經過分析,文件中的術語如下

文檔 分詞結果
Doc 1 breakthrough,drug,for,schizophrenia
Doc 2 new,schizophrenia,drug
Doc 3 new,approach,for,treatment,of

倒排列表的元數據結構:

(DocID;TF;<POS>)

其中:

  • DocID:出現某單詞的文檔ID

  • TF(詞頻):單詞在該文檔中出現的次數

  • POS:單詞在文檔中的位置

則它們生成的倒排索引

單詞 逆向文檔頻率 倒排列表(DocID;TF; ))
breakthrough 1 (1;1;<1>)
drug 2 (1;1;<2>),(2;1;<3>)
for 2 (1;1;<3>),(3;1;<3>)
schizophrenia 2 (1;1;<4>),(2;1;<2>)
new 2 (2;1;<1>),(3;1;<1>)
approach 1 (3;1;<2>)
treatment 1 (3;1;<4>)
of 1 (3;1;<5>)
  • ES 倒排索引包含兩個部分

    • 單詞詞典 (Term Dictionary),索引最小單位,記錄所有文檔的單詞,記錄單詞到倒排列表的關聯關係
      • 單詞詞典一般都會非常多,通過 B+ 樹或 Hash 表方式以滿足高性能的插入與查詢
    • 倒排列表(Posting List)-由倒排索引項(Posting)組成
      • 文檔 ID
      • 詞頻 TF,該單詞在文檔中出現的次數,用於相關性評分
      • 位置(Position),單詞在文檔中分詞的位置。用於語句搜索(phrase query)
      • 偏移(Offset),記錄單詞的開始結束位置,實現高亮显示

ES 也可以指定對某些字段不做索引

  • 優點:節省存儲空間
  • 缺點:字段無法被搜索

3 總結

在之前文章說了 ES 的文檔是基於 JSON 格式,在我們創建索引的時候,對每一個文檔記錄對應索引相關的信息。在對倒排索引進行搜索時,查詢單詞是否在單詞字典,獲取單詞在倒排列表的指針,獲取有該單詞單詞的文檔 Id 列表,通過 ES 的倒排索引,我們輕易對全文進行快速搜素。

系列文章

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

【其他文章推薦】

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

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

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

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

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

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

從 Gogoro 談起,點評台灣電動車產業與政策布局

電動車大廠特斯拉(Tesla)Model 3 於 2016 年 3 月預售開始後銷售勢如破竹,首周預購量突破 32.5 萬輛,造成產業界轟動,特斯拉高層戴爾穆德‧歐康納(Diarmuid O’Connell)於阿姆斯特丹參與電動車會議時表示,這波預購熱潮正向產業界發送訊息──電動車有極大市場需求。許多市場人士認為特斯拉已經到了「iPhone 時刻」,因為就預購與首發銷售數字比較,特斯拉 Model 3 在 2 天內預購數就達 23.2 萬輛,已經逼近初代 iPhone 在 2 天內銷售 27 萬支的成績,而在汽車史上則根本沒有可以相提並論的例子。拿「iPhone 時刻」來比擬 Model 3,可看出市場 Model 3 預售成績的驚豔轉變成期待:期望像 iPhone 啟動智慧型手機取代傳統手機的浪潮,就此讓電動車躍居主流,引爆換車巨大商機。

台灣產業界也對此風潮樂觀其成,近年來台灣電子產業鏈過度仰賴蘋果供應鏈,眼看就要隨著蘋果產品市場逐漸飽和而沉淪,如今特斯拉接到大量訂單後需要量產交貨,許多產業界人士認為台灣供應鏈最擅長規模量產、降低成本,可望在電動車零組件有新供應鏈成形。   談起特斯拉、台廠與台灣供應鏈,就不禁讓人聯想起台灣電動機車品牌 Gogoro。Gogoro 總部位於林口,其電動機車零組件除了電池與 Panasonic 合作以外,多數均由台廠供應鏈供應,而眾多歐美媒體將之譽為「二輪特斯拉」,與特斯拉相提並論。不過,相對於特斯拉不僅成為全球熱門話題,也同時成為台灣產業界注目的焦點,Gogoro 近來則似乎有點在國內媒體雷達上消失。  
Gogoro 立足台灣  打響國際知名度   儘管在國內關注熱度大不如首發之前,Gogoro 在國際舞台上倒是持續發聲。2015 年 10 月時,《富比士》(Forbes)評選 2015 年全球物聯網新創企業百強(Top 100 Internet Of Things Startups For 2015),台灣只有 Gogoro 唯一一家公司上榜,且位於前十之列的第 8 名。   2015 年 12 月,各國領袖及重量級企業雲集巴黎氣候峰會(COP21),台灣受限於 COP21 為聯合國活動,未能取得觀察員身分,官方代表無法參加,只能靠民間企業為國發聲,台達電與 Gogoro 受邀氣候峰會解決方案大展,台達電展出綠建築、Gogoro 展示電動機車與換電池站。Gogoro 也受邀參加 50 國、750 位代表與會的永續創新論壇,執行長陸學森成為 60 位登上論壇分享的代表之一。   Gogoro 之所以能有機會參與巴黎峰會,前駐法大使呂慶龍也助了一臂之力,呂慶龍曾經以台灣布袋戲向法國行銷台灣而聞名,卸任前更留下「大家忘掉呂大使也沒關係,只要記得台灣,我就算成功了」的名言。呂慶龍在 2015 年 10 月時參觀 Gogoro 信義區的體驗中心,認為十分適合向歐洲發展,之後積極協助安排,在短短 2 個月內讓 Gogoro 擠進巴黎氣候高峰會。無獨有偶,特斯拉執行長馬斯克在巴黎峰會期間,身為電動車產業領袖,也於 2015 年 12 月 2 日在巴黎第一大學發表演講,探討碳排放、氣候變遷,以及停用化石燃料等議題。

 
(Source:Gogoro)   2016 年 1 月的國際消費性電子大展(CES)上,Gogoro 也再度受邀於 Panasonic 展區設攤,因而成為唯一設展於 CES 主展館的台灣企業,Gogoro 在 Panasonic 展區的「鄰居」,正是也與 Panasonic 電池合作的特斯拉,展出其 Model S 電動車,這個因緣際會,使得 Gogoro 在國際大展場合上再度與特斯拉平起平坐,落實了前一年 CES 上多家歐美科技媒體將之比擬為「二輪特斯拉」的稱譽。  
順應全球綠能潮流  善用台灣供應鏈優勢   相對於特斯拉目前的絕頂風光,Gogoro 若拿來相提並論似乎有點失色,不過其實特斯拉也並非從開始就一帆風順,兩家企業的歷程,有許多有趣的比較之處。   首先,就資金面而言,特斯拉成立於 2003 年,至 2007 年,前 4 輪募資總計募得 1.05 億美元;Gogoro 於 2011 年成立,在 2015 年 11 月 13 日完成第二輪增資募得 1.3 億美元,投資者包括合作夥伴 Panasonic,總募資額達 1.8 億美元。也就是說,Gogoro 募資的速度與金額,其實還勝過特斯拉草創初期。   台灣企業往往資本規模遠小於歐美同業,更不用提新創企業的初期資本額只是其他產業的「百分之一」,但 Gogoro 卻能逆勢而行,取得超過特斯拉初期的資本,除了身為後進者,受惠於產業風向往電動車、電動機車發展的潮流更加明顯之外,也還有其產業鏈上的因素。兩公司之後的歷程證明,善用台灣供應鏈的確有其優勢。   特斯拉研發時程相當長,2008 年 5 月時,媒體甚至戲謔的推出「特斯拉死亡倒數時鐘」,因為特斯拉當時若得不到進一步的資金就要倒閉。其第一款電動車 Roadster 於 2008 年起出貨,至 2009 年 7 月才總算為公司帶來獲利。此後,特斯拉也一直以出貨延遲聞名,Roadster 本身就延遲 9 個月交貨,Model S 延遲超過 6 個月,Model X 更延遲超過 18 個月。   相對的,陸學森最初規劃 Gogoro 研發時程要到 2018 年才推出產品,但由於台廠供應鏈成熟,設計研發速度超前,在 2015 年就正式上市,此後出貨也相對順暢,至 2016 年 3 月 1 日累計銷售突破 6,000 輛,尚未有明顯的交貨延遲現象。相較之下,特斯拉第一款產品 Roadster 當年的總出貨量則不過 2,450 輛。

 
(Source:Gogoro)   從 Gogoro 經驗來看,台灣產業能取得的資金規模與國際相當,所在產業供應鏈的成熟度高,加上特斯拉的供應鏈想像空間,並搭上全球綠能風潮,電動車、電動機車相關產業是台灣有機會發展的產業。  
政策失靈  電動車、電動機車發展陷停滯   然而,目前國內電動車、電動機車產業發展,可說「聊勝於無」,電動機車直到 Gogoro 上市後引起正反兩方熱議,使得競爭者回應,能見度才逐漸提高。如中華車為了回應 Gogoro 的威脅,電動機車車款 EM50 推出電池續航力升級版新車;又因應 Gogoro 進軍家樂福,中華車也積極透過異業結盟加速多元化布局,可說是「有競爭才有進步」。   過去政府輔導電動車產業,被稱為越扶越倒,產業界耳語,抱怨一切政策都以裕隆為優先,但裕隆研發完全失敗後,電動車政策也跟著形同停擺,許多流言直指裕隆是國內發展電動車最大障礙。至今全台電動小客車掛牌數寥寥無幾,經濟部又轉向打算改為輔導電動中大型巴士,訂下 10 年 1 萬輛目標,目前已有許多台廠在全球市場出貨電動巴士,包括中國市場在內,但業者對回流經營台灣市場都表示興趣缺缺,指出政策上綁手綁腳,在國外經營得好好的,何必回國自找麻煩。   台灣車輛密集,若積極發展電動車、電動機車,市場潛力不小,結果產業鏈卻是期待美國的特斯拉來帶動供應鏈成形,可說是相當諷刺。另一方面,因為無法以電動車、電動機車取代汽機車污染源,又制定許多不切實際的政策打壓,尤其是針對機車族,造成許多民怨。  
解決空污問題  應以減少機車排放展開布局   2016 年 1 月 3 日,台北市長柯文哲帶頭對機車宣戰,下達三大狠招,就是要打擊機車沒得商量,包括要強力執行對機車停車格收費、增加自行車道來減少機車道消滅機車行駛空間,另外輔以調降公共運輸費率的「推力與拉力」來吸引機車族放棄機車,政策一出,全台北市機車族嘩然。   柯文哲的政策並非他的創見,事實上,幾十年來,上至中央交通部,一直到各縣市交通局,整個政府的一貫政策就是將機車視為眼中釘,想盡辦法消滅。以台北市而言,前任市長郝龍斌任內,以改造機車彎的名義,實質上大量減少機車停車格,也是消滅機車的一環。為何要消滅機車?其主要的因素之一:機車是重要的都市空氣污染排放源,尤其近年來民眾關切 PM2.5 問題,機車的排放更是遭放大檢視。   消滅機車是整個國家的既定政策,柯文哲只不過是「比較白目」把這個政策公開講出來而已。但是,這些制定政策的官員,卻從未站在民眾的角度思考為何生活中非機車不可,只想著用「推力與拉力」強逼民眾繳出更多的停車費、罰款,壓縮路權,讓民眾「騎不下去」,卻不知民眾是有非騎不可的苦衷,政策無法消滅機車,只是在製造人民的痛苦。   不過,機車污染問題也是貨真價實,以台北市環保局公布的數據,有 58% 的 PM2.5 來自於本地,其中又有 35% 的 PM2.5 來自於汽機車廢氣。在全台灣約 2,000 萬輛汽機車之中,機車佔了約 1,400 萬輛,其中高污染的二行程機車雖然逐年淘汰中,但即使是四行程機車,排放廢氣中 PM2.5 所佔比率也高達 86.5%,廢氣集中在道路上,使得機車騎士本身暴露於 PM2.5 的程度遠高於平均值,以台北市而言,PM2.5 平均值 19.6 μg/m3,但是台北都會區機車族暴露的 PM2.5 平均濃度高達 161.6 μg/m3,許多機車族因此會戴上口罩,但是很不幸的,PM2.5 小到連呼吸道中的纖毛都攔不住,口罩當然也沒有辦法過濾,戴上口罩只是純粹「求心安」。

 
(Source:台北市政府環保局。製圖:科技新報)   但民眾有使用機車的實際需求,如台北市巷弄多,公車不可能鑽進每個小巷,柯文哲市長試圖用腳踏車來填補「最後一哩」,卻忘了不是每個人都與他一樣有著能「一日雙塔」的腳力,此外更有載貨需求,用腳踏車要如何滿足?除非整個交通系統有革命性的改變,譬如小型無人車普及並結合分享服務,在那之前,台灣人就是需要機車,不可能予以打壓消滅。   唯一的辦法,不是消滅機車,而是消滅機車產生的污染,若機車能多數改為電動機車,自然沒有排氣中 PM2.5 對健康的威脅,那麼政府就不需千方百計消滅機車。事實上,包括 Gogoro 在內的各電動機車廠與各級政府相關部門討論電動車、電動機車相關規範事宜時,相關官員曾表示,若電動機車真能普及取代燃油機車,「那就不用打壓機車了」。  
跳脫產業侷限  成為智慧能源試金石   Gogoro 與特斯拉最大的相同點,或許在於對自己的定義都不只是車廠。特斯拉已經逐漸顯示其發展核心為 Gigafactory,也就是定位於以鋰電池為主的能源領域,Gogoro 則自始就強調其願景為「更自主更智慧的個人能源使用方式」。   由於 Gogoro 採用換電站方式運行,現已有 177 座 GoStation 電池交換站,未來更將加速拓展新城市擴充布站據點,期望達成一公里一站的目標。若日後換電站能遍布各處,城市電網與換電站之間又能彼此聯繫智慧調控,將可在供電緊繃時減緩換電站中充飽電池的速度,在電力有餘裕的時候加速充電,以達需求反應調節的效果,更進一步,則可能利用換電站中的電池做為分散式能源儲存資源使用。

 
▲ 目前所有 GoStation 電池交換站(含興建中)的服務範圍(點選查看互動地圖)。   台灣未來積極發展綠能、智慧電網,若已有多家同樣以換電站方式運行的電動車、電動機車民間企業,建立廣布的分散式能源儲存資源,將可望節省可觀的建置時間與預算。發展電動車、電動機車產業,不僅可為供應鏈找出路,減少 PM2.5 污染問題,也能對未來先進智慧能源系統發展有所助益。   然而,台灣的發展狀態可說相當尷尬,目前國內電動機車的銷售主要由 Gogoro 帶動,3 月時 Gogoro 宣布在重點城市市佔率高達 92%,但是即使是 Gogoro,與傳統機車銷售量相比較,也還是小巫見大巫,尚未發揮取代傳統機車的作用。   而政府在各政策之間向來缺乏完整的整體思惟與彼此配套,在針對機車與污染相關政策的時候也一樣,2015 年 12 月,立院通過行政院函請審議的貨物稅條例第 12 條之 5 條文修正草案,其重點是希望以減稅優惠補貼,來促進民眾汰換 6 年以上老舊汽車或 4 年以上老舊機車,只要民眾報廢或出口符合條件的中古汽機車,可在購買新車時享貨物稅減稅優惠,汽車減 5 萬元、機車減 4 千元。   這個方案是因為行政院想以消費刺激經濟,又認為老舊汽機車排氣的空污較嚴重,因此鼓勵舊換新,單獨來看立意尚佳,但考慮到政府也正在希望推動電動車、電動機車,以更徹底的減少交通空污,政府一邊計劃發展電動車、補貼電動機車,卻又一邊補貼汽油車與機車,兩個策略的方向彼此抵消,施政可說毫無整體性可言。   過去政府對於電動車、電動機車的政策只能以「七零八落」形容,對機車則是一味打壓,訴諸「推力與拉力」,很少思考如何給機車族民眾一條替代出路;而新政府即將往綠能、智慧電網的世界潮流發展,產業界則殷殷尋求下一個供應鏈商機,這數個重大需求結合起來,若能形成跨部會政策一同推動,整合法規、政策補貼與稅制彼此配合,同時解決多個需求,將可事半功倍。反之,若還是像過去,政府各單位本位主義各自為政,你打壓你的機車,我把電動車「扶倒」,那麼將同樣一事無成。   特斯拉風風光光,台灣產業界固然羨慕,但我們不應只是對著可能的供應鏈商機流口水,而是該趁此機會,全盤檢討國家政策:當電動車來到「iPhone 時刻」,該如何跟上這股商機,並以此對國家全面性的發展有所助益?新政府與其區分「五大創新產業」,其實跨部會、跨領域、跨產業、跨議題的通盤思考,或許對高效率的施政更有幫助。  
參考資料:

(首圖來源:  CC BY 2.0)

(本文授權轉載自《》─〈〉)

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

【其他文章推薦】

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

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

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

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

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

豐田與Uber將聯手打造新型汽車租賃業務

據路透社報導,豐田與Uber 5月24日宣稱,或在汽車共用服務領域展開合作,前者將投資汽車租賃。

雙方在一份聯合聲明中表示,將打造新型租賃業務,購車者可從豐田金融服務公司租賃車輛,作為Uber司機獲取收入,該收入可作為租車費用。

稍早時候,大眾宣佈向汽車共用公司Gett投資3億美元。此前,通用已向Lyft投資了5億美元,開發按需自動駕駛網路。

近日,蘋果向滴滴出行投資了10億美元,這被認為是科技巨頭搶佔中國市場份額的重大舉動。與此同時,福特正在尋求合作夥伴,以發展汽車製造和銷售之外的業務。

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

【其他文章推薦】

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

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

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

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

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

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