標籤: 網頁設計

  • 南非旅遊新規 禁止人與野生動物互動 業主正反聲浪四起

    南非旅遊新規 禁止人與野生動物互動 業主正反聲浪四起

    環境資訊中心外電;姜唯 翻譯;林大利 審校;稿源:ENS

    南非旅遊服務協會(South African Tourism Services Association, SATSA)表示將不再允許遊客與任何野生動物幼獸互動、與掠食性動物或大象散步、與掠食性動物互動、以及騎乘野生動物。

    SATSA的動物互動委員會在10月31日的產業簡報會議上宣布,不再推薦提供此類活動給國際旅遊業者或觀光客。

    南非旅遊服務協會宣布人與野生動物互動新規定。照片來源:

    發言人Blessing Manale表示,南非國家旅遊局相當歡迎對SATSA的「」。他說,該準則「鼓勵尊重南非自然襲產的觀光活動,勸阻剝削野生動植物的經營方式」,支持現行的國家責任旅遊標準。

    全國防止虐待動物協會(NSPCA)也歡迎新規。發言人威爾遜(Megan Wilson)說:「SATSA花時間向全國各地的權益關係人徵詢意見,並選擇了我們認同的立場。」

    SATSA的研究成果可用來評估與動物的互動是否符合倫理,並選擇符合倫理的互動方式,其中包含評估的決策樹。入境旅遊運營商Private Safaris表示,SATSA的倫理框架是該產業的重要指引。

    私人狩獵公司執行長伊埃爾(Monika Iuel)表示:「長期以來我們一直很困惑,在南非,要怎樣與圈養野生動物互動才符合倫理。」

    「現在旅遊業、旅行社、任何其他訂購管道、行銷組織和媒體都必須承擔責任,確保我們灌輸在地和國際觀光客正確觀念,並積極與我們的業務夥伴合作,使不道德動物互動需求減少,最終能停止。」

    SATSA的研究簡報主旨是「幫助業者、產品所有者、遊客和一般南非大眾做出更好的選擇」,許多業者都參加了該會議。

    野生動物觀光設施業者之一、誇祖魯-納塔爾省的祖魯蘭貓科動物保育計畫業主內爾(Louis & Cecillie Nel)夫妻兩年前重新評估他們的經營方式。

    他們與SATSA密切合作,「決定更改整個體制,終止所有互動。結果訪客人數大幅下降,但我們立場不變並繼續前進。」他們希望成為產業的示範,且新的SATSA指南能夠促使更多企業跟進。

    其他業主就沒那麼容易接受。約堡獅子公園總經理拉科克(Andre La Cock)表示對SATSA新指南深感失望,「這肯定會對我們的生意產生負面影響」。約堡獅子公園目前是SATSA的成員,一旦新政策實施就必須遵守​​,否則可能會失去協會的認可。

    約堡獅子公園的動物互動活動包括撫摸幼獸、與獵豹和獅子散步等。拉科克說:「這些活動是我們業務的核心,佔營業額的30%以上,少了這些我們會活不下去。」

    永續旅遊顧問德瓦爾(Louise de Waal)博士說,不符合SATSA新標準的業主肯定會極力爭取維持現狀。「但是,整個產業一直在尋求與野生動物互動的標準,哪些活動可以哪些不可以。」

    反對黨預備內閣旅遊部長弗雷塔斯(Manny De Freitas)說:「人類與野生動物互動是不自然的。在南非,我們需要在野生動物旅遊業中培養出一種符合倫理和自然的方法。我們應該教育遊客,解釋為什麼某些活動不再被接受。」

    我們應該教育遊客,人類與野生動物互動是不自然的。照片來源: (CC BY-ND 2.0)

    SATSA希望在其年度大會後於2020年7月底全面實施新準則,若從事以下活動則取消會員資格標準:

    • 動物表演–所有類型的動物,包括大象、掠食動物、靈長類動物和鳥類
    • 觸摸任何野生動物幼獸
    • 觸摸陸域掠食者、鯨豚和其他水域哺乳動物
    • 與掠食動物或大象散步
    • 騎乘動物,包括大象和鴕鳥

    此外,該準則也警告旅遊業者和遊客不要去可能涉及任何非法貿易、動物的部位交易、圈養狩獵、繁殖、誤導性廣告或缺乏透明度的旅遊設施。

    New Animal Rules Rattle South African Tourism Industry JOHANNESBURG, South Africa, December 13, 2019 (ENS)

    Interactions with all infant wildlife, walking with predators or elephants, interacting with predators and the riding of wild animals are no longer acceptable practices, according to the South African Tourism Services Association, SATSA.

    The association’s Animal Interactions board committee announced at an industry briefing on October 31 that facilities in South Africa offering any such activities will no longer be recommended to international operators or visitors.

    The National Department of Tourism has welcomed SATSA’s “commitment to protection of our wildlife and environmental resources,” says spokesperson Blessing Manale.

    He says the guidelines support the existing National Standards for Responsible Tourism in “encouraging visitor behavior that respects South Africa’s natural heritage and discouraged exploitative wildlife industries.”

    Going forward, the National Department of Tourism, “will be looking into the guidelines in detail to ensure that we support emerging product owners to meet such standards,” Manale said.

    The NSPCA has also welcomed the move. “SATSA took the time to gain opinion from stakeholders countrywide and made a stand which we approve of,” says spokesperson Megan Wilson.

    The research outcome has been structured as a practical and interactive tool to evaluate and select ethical animal interactions. It includes a “decision tree” for assessing such operations.

    According to the inbound tourism operator Private Safaris, SATSA’s ethical framework is a beacon for the industry.

    “It has long pained us that there has been no clarity about what constitutes an ethical captive wildlife encounter in South Africa,” says Private Safaris CEO Monika Iuel.

    “It is now incumbent on the industry – tour operators, any other booking channels, marketing organizations, and media – to ensure that we educate the local and international traveler, and actively engage our business partners in order to work towards demand for unethical animal experiences being reduced and eventually stopped.”

    The SATSA research briefing, aimed at “helping operators, product owners, tourists, and everyday South Africans make good choices,” was attended by many operators within the industry.

    One such wildlife facility is the Zululand Cat Conservation project in KwaZulu-Natal, previously known as the Emdoneni Cheetah Project. Owners Louis and Cecillie Nel re-evaluated their approach to tourism two years ago.

    Working closely with SATSA, the Nels say they “decided to change the entire system to end all interactions. Visitor numbers dropped immensely, but we made the stance and pushed forward.”

    “We did our best. But now that we know better, we need to do better,” they say. They hope their example, along with the new SATSA guidelines, will prompt more businesses to do the same.”

    Other facilities haven’t been as susceptible to change. Joburg Lion Park general manager Andre La Cock says they “are deeply disappointed with the outcome of the SATSA guide” which will “definitely have a negative impact on our business”.

    The Joburg Lion Park is currently a member of SATSA and will have to adhere to the new policies once they are implemented, or risk losing endorsement from the association.

    The facility hosts activities like cub petting, walking with cheetah and lion, which “cannot be altered or tailored to adhere to the SATSA guidelines because they have been categorized as outright unacceptable,” La Cock says. “These activities are the core of our business and make up more than 30 percent of our turnover – without which our business would not survive.”

    Facilities falling outside SATSA’s new criteria “will no doubt fight tooth and nail to keep the status quo,” says sustainable tourism consultant Dr. Louise de Waal. “However, the wider industry has been begging for guidance on what captive wildlife interaction activities are and are no longer acceptable.”

    “It’s not natural for humans to interact with wild animals,” says Shadow Tourism Minister Manny De Freitas. “In South Africa, we need to foster an ethical and natural approach to wildlife tourism. We should educate tourists, explaining why certain activities are no longer acceptable.”

    SATSA hopes to implement the guidelines with full effect by the end of July 2020, after its Annual General Meeting. “We hope to outline what the specific criteria for members who provide animal interactions will be at this meeting,” says SATSA CEO David Frost.

    The new guidelines contain strict disqualifying criteria for:

    • Performing animals – all types of animals, including elephants, predators, primates, and birds
    • Tactile interactions with all infant wild animals
    • Tactile interactions with land predators, cetaceans and other aquatic mammals
    • Walking with predators or elephants
    • Riding of animals, including elephants and ostriches

    Additionally, the guidelines warn operators and tourists against facilities that may be involved in any illegal trade, trading in body parts, canned hunting, breeding, misleading advertising and any lack of transparency.

    “Primarily,” Frost says, “the research outlines a home-grown approach to a complex problem, one which draws a line in the sand – moving the South African tourism industry forward in terms of responsible and sustainable practices.”

    ※ 全文及圖片詳見:

    ※ 本文與 行政院農業委員會 林務局   合作刊登

    作者

    如果有一件事是重要的,如果能為孩子實現一個願望,那就是人類與大自然和諧共存。

    於特有生物研究保育中心服務,小鳥和棲地是主要的研究對象。是龜毛的讀者,認為龜毛是探索世界的美德。

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

    【其他文章推薦】

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

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※想知道最厲害的網頁設計公司"嚨底家"!

    ※幫你省時又省力,新北清潔一流服務好口碑

    ※別再煩惱如何寫文案,掌握八大原則!

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

  • 減少碳排放 全球7大船東協會提燃油課稅案

    摘錄自2019年12月18日中央社倫敦報導

    重視巴黎氣候協定(Paris Agreement)所設定目標的全球7大船東協會,今天(18日)提出燃油課稅新方案,以減少造成全球汙染最嚴重行業之一的碳排放量。

    包括波羅的海國際航運公會(BIMCO)、國際獨立油輪船東協會(Intertanko)與世界航運評議會(World Shipping Council)在內的7大船東協會發表聲明宣布,他們將向商船公司課徵每公噸燃油2美元的稅金,籌措50億美元(約新台幣1508億元)經費以成立研究航運業減碳的團體。

    這個國際海洋研究發展理事會(The International Maritime Research and Development Board, IMRDB)將致力於減少航運業的二氧化碳排放量,並計畫於2030年初,研發商業上行得通的零排碳船。

    7大船東協會另包括國際郵輪協會(Cruise Lines International Association)、國際乾貨船東協會(Intercargo)、國際航運商會(International Chamber of Shipping)與國際郵件油輪協會(International Parcel Tankers Association)。

     

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

    【其他文章推薦】

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※別再煩惱如何寫文案,掌握八大原則!

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※超省錢租車方案

    ※教你寫出一流的銷售文案?

    網頁設計最專業,超強功能平台可客製化

  • 中國高新汽車國際峰會 – 汽車行業思想領袖的國際峰會

    第二屆中國高新汽車國際峰會由法蘭克福展覽(上海)公司和中國國家發展改革委員會國際合作中心聯合主辦,是真正國際化的高端會議,匯聚來自汽車行業的企業高管、中國政府高層官員和海外專家。    高峰會議程中將探討的關鍵主題包括:   ‧
    促進中國國有和民營汽車企業的競爭力轉型:朝著真正合作、技術轉讓和全球市場渠道邁進   ‧
    合併路線圖:如何盡可能擴大未來汽車行業的商業優勢
      ‧
    混合動力機會評估:與電動汽車和輕量化ICE相比較
      ‧
    通往電氣化的關鍵步驟:實現電動汽車和電動交通的真正發展
      ‧
    汽車智聯技術創新實現新機會

      ‧
    具備高增長潛力的未來配件市場機會:盈利發展   ‧
    新型汽車市場定位:中西部地區與新興城市
     

    數字營銷與社交媒體:OEM廠商和經銷商的最佳實踐
      ‧
    有效減排:實現更加高效的商業車隊
      ‧
    促進節能以及輕量化ICE的影響
      ‧
    通過主動和被動方式,實現前所未有的駕駛者和車輛安全目標   ‧
    輕量化實現更加節能、高性能的車型
      ‧
    經銷商和分銷商在新維修市場中的新興機會   ‧
    汽車融資和保險選項的演化和潛在新方向   ‧
    展望未來:個人交通戰略與中國的未來生態城市相匹配   峰會誠邀候選演講嘉賓與主講嘉賓在2013年10月18日星期五之前提交演講提案。 峰會可提供的機會包括:思想領導力演講、企業高管訪談、互動小組討論、科技前沿和贊助活動。歡迎高層企業家參與主題演講,主題與演講機會有限,敬請報名。(請注意,演講提案並非僅限於上述主題,也歡迎您提供更多主題思路。)   提交程序   請在截止日期之前通過電子方式提交。請盡快從峰會官網下載「徵文申請表」,填寫並發回。所提交的所有申請表將由峰會議程組委會加以確認,並在評估階段提供反饋。 網址: http://www.nextgenautosummit-china.com/sc/Call_for_papers.html   Automechanika Shanghai上海汽配展毗鄰舉行 發揮絕佳的協同效應 Automechanika Shanghai上海國際汽車零部件、維修檢測診斷設備及汽車用品展覽會,將於2013年12月10至13日在毗連嘉裡大酒店的上海新國際博覽中心舉行。Automechanika Shanghai由法蘭克福展覽(上海)有限公司及中國汽車工業國際合作總公司聯合主辦,是規模僅次於德國法蘭克福母展的全球第二大Automechanika品牌展覽會,涵蓋汽車零部件、維修與保養、用 品及改裝三大行業板塊,涉及汽車原廠製造及售後市場的各 項產品及服務,整合汽車全產業鏈。預計展商數量超過4,400家,並將迎來8萬名海內外優質買家蒞臨,創歷屆展會之最。   垂詢與聯繫方式:    登記和綜合垂詢: Anna Gu 小姐 電話: +86 21 6160 8569 anna.gu@china.messefrankfurt.com   戰略合作機會: Keiann Yip 小姐 電話: +852 2230 9202 keiann.yip@hongkong.messefrankfurt.com   演講機會、贊助與檯面展示: Charlotte Chan 小姐 電話: +852 2111 3977 charlotte.chan@inspira-events.com    Michael Cherrington 先生 電話: +852 2111 3972 michael.cherrington@inspira-events.com   媒體垂詢: Rachelle Kong 電話: +852 2230 9226 rachelle.kong@hongkong.messefrankfurt.com  

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

    【其他文章推薦】

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

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※台北網頁設計公司全省服務真心推薦

    ※想知道最厲害的網頁設計公司"嚨底家"!

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※推薦評價好的iphone維修中心

  • 車型電氣化成趨勢 通用擬在華推多款電動車

    車型電氣化成趨勢 通用擬在華推多款電動車

    車型電氣化已成為目前各大車企在新能源方面的發展方向,如大眾、BMW、奔馳等品牌皆是如此。作為美國車企巨頭的通用汽車,也開始沿襲電動化產品的發展趨勢。

    通用汽車CEO丹‧艾克森表示,將會加強在電動汽車領域的推廣,其中中國市場是通用全球市場中的重要一環。此外,通用汽車還將通過推出豪華電動車跑車,抗衡目前風頭正勁的豪華電動車品牌特斯拉。

    據通用汽車高管透露,未來通用汽車將在華推出凱迪拉克ELR和賽歐EV等多款電動車和插電混動車,加之已經引入的沃藍達,通用汽車在華將形成豐富電動車產品陣容。

    通用汽車曾官方表示:“至2017年,通用汽車在全球范圍內每年將生產50萬輛採用電氣化技術的車輛。”對于目前通用汽車採用插電式混動車型僅有雪佛蘭沃藍達一款車型。今後還將陸續投放凱迪拉克ELR插電混動跑車和一款價格相比沃藍達更低的入門級插電混動車。此外,通用汽車還有多款搭載eAssist微混動力係統的車型,如別克君越、別克君威、雪佛蘭邁銳寶以及雪佛蘭Impala。

    除通用汽車在華全面發展電氣化車型外,如BMW品牌和大眾集團也計劃在華開展電動車項目。BMW在發布全新子品牌BMW i,該品牌將致力于發展新能源車型,並于2014年將旗下首款電動車i3及超跑電動車i8發布上市。大眾集團也計劃先期在華投放e-up!,同時在2014年陸續將有多款車型匹配插電混合動力,從而使大眾汽車實現全面電氣化。

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

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

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

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

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • 挪威大力提倡電動汽車 9月Tesla銷量奪冠

    美國電動汽車廠商特斯拉(Tesla),在挪威推出電動轎車Model S才2個月,需求即湧現,甚至9月榮登挪威最熱賣車款,市場認為這跟挪威政府大力補貼電動車有莫大關係。

    特斯拉9月在挪威賣出616輛Model S,在挪威9月汽車總銷售裡占5.1%。至於日產電動車Leaf,1 ~9月為挪威包括汽油等各車種裡,暢銷排名第5的車款,在挪威整體車市裡占約3%。外界估計目前在挪威路上行駛的電動車達14,500輛。根據美國電力驅動運輸協會(EDTA)資料,美國去年僅賣出13,427輛電動車。

    挪威大力提倡電動車,成為其他推廣電動車國家的一個典範。挪威首都奧斯陸市長史坦(Fabian Stang),最近宣布奧斯陸為「電動車之都」。他說,挪威對電動車立場,是對環保所做更大承諾的一部份。挪威政府估計,該國為全球人均電動車比例最高的國家。挪威全國人口約500萬人。

    外界認為挪威有規模7,500億美元的主權財富基金做後盾,才能提供許多補貼來大力提倡電動車,使許多國家望塵莫及。其主權基金是以石油收益來建立,外界估計是全球規模最大的主權基金。

    挪威給電動車豁免領牌費和25%增值稅,如此每輛電動車的車主立即省下數萬美元;豁免通行費,並可在奧斯陸的高速公路上使用公車專用道,能在最繁忙時段避開塞車之苦。挪威汽油價格為歐洲最高,每公升汽油15.16挪威克朗(約74.6台幣),讓電動車有很大吸引力。

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

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

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

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

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

    ※別再煩惱如何寫文案,掌握八大原則!

    網頁設計最專業,超強功能平台可客製化

  • 截至9月底 日產Leaf全球累計銷量83,000台

    日本汽車大廠日產汽車(Nissan)昨(8)日發布新聞稿稱,旗下全球首款量產型電動車「Leaf」於全球各個市場的銷售氣勢持續高漲,截至2013年9月底為止,Leaf全球累計銷售量達83,000台,9月Leaf全球銷售量更高達4,700台、創史上最高單月銷售紀錄。另外,截至9月底為止,Leaf於日本市場的累計銷售量達30,000台。

    日產表示,Leaf於2010年10月搶先於日本/北美市場開賣,且銷售量逐年增長,其中2012年度Leaf於日本市場的銷售量就達11,600台、且預估今年度(2013年度)日本市場銷售量可望更優於2012年度水準。

    為了加快電動車的普及速度,日產還計劃於2013年度下半年內(2013年10月-2014年3月)追加於日本國內的日產銷售通路增設700座快速充電器。目前日本全國的快速充電器數量總計約1,900座,其中約800座設置在日產的銷售通路。

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

    【其他文章推薦】

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

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

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

    南投搬家公司費用需注意的眉眉角角,別等搬了再說!

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※教你寫出一流的銷售文案?

  • 預購突破8000臺 BMW考慮擴大電動i3生產規模

    預購突破8000臺 BMW考慮擴大電動i3生產規模

    據彭博今(16)日報導,德國豪華車廠寶馬汽車公司(BMW)CFO Friedrich Eichiner表示,因初期需求超乎該公司原先預期,故考慮擴大電動車的生產規模。Friedrich Eichiner表示,i3雖尚未在歐洲市場開賣,但目前接獲的預購訂單已突破8,000台,且預估此種需求可望持續下去,故有必要立即進行進一步的投資。

    據悉,i3將在11月16日於德國開賣,售價為3萬4,950歐元(約460萬日圓),之後並將在2014年1-6月期間於美國、日本、中國大陸進行販售。BMW預估2014年i3銷售量可達1萬台以上。

    近來電動汽車需求出現明顯增長,除BMW之外,日產(Nissan)電動車「Leaf」也交出亮眼成績單。

    據日經新聞報導,日產汽車首席運營官(COO)志賀俊之10月11日於東京都內舉行的日本證券分析師大會上表示,日產電動車「Leaf」今年度(2013年度)全球銷售量預估將能達到5萬台以上的水準,將較2012年度的3萬台呈現大幅度的增長(將大增7成)。

    根據日產汽車10月8日發布的資料顯示,截至2013年9月底為止,Leaf全球累計銷售量達83,000台,而2013年9月份Leaf全球銷售量更高達4,700台、創史上最高單月銷售紀錄。

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

    【其他文章推薦】

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

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※想知道最厲害的網頁設計公司"嚨底家"!

    ※幫你省時又省力,新北清潔一流服務好口碑

    ※別再煩惱如何寫文案,掌握八大原則!

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

  • 萬向電動汽車獲得中國工信部資質認證

    萬向電動汽車獲得中國工信部資質認證

    中國工信部今(22)日發布《車輛生產企業及產品公告》(第254批),公示了三家新增車輛生產企業的名單,公示時間為22日-28日。其中萬向電動汽車有限公司名列其中。

    此前,萬向在電動汽車相關領域投入重資,雖已經初步形成車載電子系統、動力電池和電動汽車領等較完整的產業鏈,但在國內市場上,作為從事電動汽車相關業務的公司,仍缺少工信部認證的資質。

    2013年1月,萬向成功收購美國A123,完善了電池產業鏈條,借全球知名企業品牌優勢,擴大了其在美國市場的銷售份額。

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

    【其他文章推薦】

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※別再煩惱如何寫文案,掌握八大原則!

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※超省錢租車方案

    ※教你寫出一流的銷售文案?

    網頁設計最專業,超強功能平台可客製化

  • 一個線上問題的思考:Eureka註冊中心集群如何實現客戶端請求負載及故障轉移?

    一個線上問題的思考:Eureka註冊中心集群如何實現客戶端請求負載及故障轉移?

    前言

    先拋一個問題給我聰明的讀者,如果你們使用微服務SpringCloud-Netflix進行業務開發,那麼線上註冊中心肯定也是用了集群部署,問題來了:

    你了解Eureka註冊中心集群如何實現客戶端請求負載及故障轉移嗎?

    可以先思考一分鐘,我希望你能夠帶着問題來閱讀此篇文章,也希望你看完文章後會有所收穫!

    背景

    前段時間線上Sentry平台報警,多個業務服務在和註冊中心交互時,例如續約註冊表增量拉取等都報了Request execution failed with message : Connection refused 的警告:

    緊接着又看到 Request execution succeeded on retry #2 的日誌。

    看到這裏,表明我們的服務在嘗試兩次重連后和註冊中心交互正常了。

    一切都顯得那麼有驚無險,這裏報Connection refused 是註冊中心網絡抖動導致的,接着觸發了我們服務的重連,重連成功后一切又恢復正常。

    這次的報警雖然沒有對我們線上業務造成影響,並且也在第一時間恢復了正常,但作為一個愛思考的小火雞,我很好奇這背後的一系列邏輯:Eureka註冊中心集群如何實現客戶端請求負載及故障轉移?

    註冊中心集群負載測試

    線上註冊中心是由三台機器組成的集群,都是4c8g的配置,業務端配置註冊中心地址如下(這裏的peer來代替具體的ip地址):

    eureka.client.serviceUrl.defaultZone=http://peer1:8080/eureka/,http://peer2:8080/eureka/,http://peer3:8080/eureka/
    

    我們可以寫了一個Demo進行測試:

    註冊中心集群負載測試

    1、本地通過修改EurekaServer服務的端口號來模擬註冊中心集群部署,分別以87618762兩個端口進行啟動
    2、啟動客戶端SeviceA,配置註冊中心地址為:http://localhost:8761/eureka,http://localhost:8762/eureka

    3、啟動SeviceA時在發送註冊請求的地方打斷點:AbstractJerseyEurekaHttpClient.register(),如下圖所示:

    這裏看到請求註冊中心時,連接的是8761這個端口的服務。

    4、更改ServiceA中註冊中心的配置:http://localhost:8762/eureka,http://localhost:8761/eureka
    5、重新啟動SeviceA然後查看端口,如下圖所示:

    此時看到請求註冊中心是,連接的是8762這個端口的服務。

    註冊中心故障轉移測試

    以兩個端口分別啟動EurekaServer服務,再啟動一個客戶端ServiceA。啟動成功后,關閉一個8761端口對應的服務,查看此時客戶端是否會自動遷移請求到8762端口對應的服務:

    1、以87618762兩個端口號啟動EurekaServer
    2、啟動ServiceA,配置註冊中心地址為:http://localhost:8761/eureka,http://localhost:8762/eureka
    3、啟動成功后,關閉8761端口的EurekaServer
    4、在EurekaClient發送心跳請求的地方打上斷點:AbstractJerseyEurekaHttpClient.sendHeartBeat()
    5、查看斷點處數據,第一次請求的EurekaServer8761端口的服務,因為該服務已經關閉,所以返回的responsenull

    6、第二次會重新請求8762端口的服務,返回的response為狀態為200,故障轉移成功,如下圖:

    思考

    通過這兩個測試Demo,我以為EurekaClient每次都會取defaultZone配置的第一個host作為請求EurekaServer的請求的地址,如果該節點故障時,會自動切換配置中的下一個EurekaServer進行重新請求。

    那麼疑問來了,EurekaClient每次請求真的是以配置的defaultZone配置的第一個服務節點作為請求的嗎?這似乎也太弱了!!?

    EurekaServer集群不就成了偽集群!!?除了客戶端配置的第一個節點,其它註冊中心的節點都只能作為備份和故障轉移來使用!!?

    真相是這樣嗎?NO!我們眼見也不一定為實,源碼面前毫無秘密!

    翠花,上乾貨!

    客戶端請求負載原理

    原理圖解

    還是先上結論,負載原理如圖所示:

    這裡會以EurekaClient端的IP作為隨機的種子,然後隨機打亂serverList,例如我們在商品服務(192.168.10.56)中配置的註冊中心集群地址為:peer1,peer2,peer3,打亂后的地址可能變成peer3,peer2,peer1

    用戶服務(192.168.22.31)中配置的註冊中心集群地址為:peer1,peer2,peer3,打亂后的地址可能變成peer2,peer1,peer3

    EurekaClient每次請求serverList中的第一個服務,從而達到負載的目的。

    代碼實現

    我們直接看最底層負載代碼的實現,具體代碼在
    com.netflix.discovery.shared.resolver.ResolverUtils.randomize() 中:

    這裏面random 是通過我們EurekaClient端的ipv4做為隨機的種子,生成一個重新排序的serverList,也就是對應代碼中的randomList,所以每個EurekaClient獲取到的serverList順序可能不同,在使用過程中,取列表的第一個元素作為serverhost,從而達到負載的目的。

    思考

    原來代碼是通過EurekaClientIP進行負載的,所以剛才通過DEMO程序結果就能解釋的通了,因為我們做實驗都是用的同一個IP,所以每次都是會訪問同一個Server節點。

    既然說到了負載,這裏肯定會有另一個疑問:

    通過IP進行的負載均衡,每次請求都會均勻分散到每一個Server節點嗎?

    比如第一次訪問Peer1,第二次訪問Peer2,第三次訪問Peer3,第四次繼續訪問Peer1等,循環往複……

    我們可以繼續做個試驗,假如我們有10000個EurekaClient節點,3個EurekaServer節點。

    Client節點的IP區間為:192.168.0.0 ~ 192.168.255.255,這裏面共覆蓋6w多個ip段,測試代碼如下:

    /**
     * 模擬註冊中心集群負載,驗證負載散列算法
     *
     *  @author 一枝花算不算浪漫
     *  @date 2020/6/21 23:36
     */
    public class EurekaClusterLoadBalanceTest {
    
        public static void main(String[] args) {
            testEurekaClusterBalance();
        }
    
        /**
         * 模擬ip段測試註冊中心負載集群
         */
        private static void testEurekaClusterBalance() {
            int ipLoopSize = 65000;
            String ipFormat = "192.168.%s.%s";
            TreeMap<String, Integer> ipMap = Maps.newTreeMap();
            int netIndex = 0;
            int lastIndex = 0;
            for (int i = 0; i < ipLoopSize; i++) {
                if (lastIndex == 256) {
                    netIndex += 1;
                    lastIndex = 0;
                }
    
                String ip = String.format(ipFormat, netIndex, lastIndex);
                randomize(ip, ipMap);
                System.out.println("IP: " + ip);
                lastIndex += 1;
            }
    
            printIpResult(ipMap, ipLoopSize);
        }
    
        /**
         * 模擬指定ip地址獲取對應註冊中心負載
         */
        private static void randomize(String eurekaClientIp, TreeMap<String, Integer> ipMap) {
            List<String> eurekaServerUrlList = Lists.newArrayList();
            eurekaServerUrlList.add("http://peer1:8080/eureka/");
            eurekaServerUrlList.add("http://peer2:8080/eureka/");
            eurekaServerUrlList.add("http://peer3:8080/eureka/");
    
            List<String> randomList = new ArrayList<>(eurekaServerUrlList);
            Random random = new Random(eurekaClientIp.hashCode());
            int last = randomList.size() - 1;
            for (int i = 0; i < last; i++) {
                int pos = random.nextInt(randomList.size() - i);
                if (pos != i) {
                    Collections.swap(randomList, i, pos);
                }
            }
    
            for (String eurekaHost : randomList) {
                int ipCount = ipMap.get(eurekaHost) == null ? 0 : ipMap.get(eurekaHost);
                ipMap.put(eurekaHost, ipCount + 1);
                break;
            }
        }
    
        private static void printIpResult(TreeMap<String, Integer> ipMap, int totalCount) {
            for (Map.Entry<String, Integer> entry : ipMap.entrySet()) {
                Integer count = entry.getValue();
                BigDecimal rate = new BigDecimal(count).divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
                System.out.println(entry.getKey() + ":" + count + ":" + rate.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP) + "%");
            }
        }
    }
    

    負載測試結果如下:

    可以看到第二個機器會有50%的請求,最後一台機器只有17%的請求,負載的情況並不是很均勻,我認為通過IP負載並不是一個好的方案。

    還記得我們之前講過Ribbon默認的輪詢算法RoundRobinRule,【一起學源碼-微服務】Ribbon 源碼四:進一步探究Ribbon的IRule和IPing 。

    這種算法就是一個很好的散列算法,可以保證每次請求都很均勻,原理如下圖:

    故障轉移原理

    原理圖解

    還是先上結論,如下圖:

    我們的serverList按照client端的ip進行重排序后,每次都會請求第一個元素作為和Server端交互的host,如果請求失敗,會嘗試請求serverList列表中的第二個元素繼續請求,這次請求成功后,會將此次請求的host放到全局的一個變量中保存起來,下次client端再次請求 就會直接使用這個host

    這裏最多會重試請求兩次。

    代碼實現

    直接看底層交互的代碼,位置在
    com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute() 中:

    我們來分析下這個代碼:

    1. 第101行,獲取client上次成功server端的host,如果有值則直接使用這個host
    2. 第105行,getHostCandidates()是獲取client端配置的serverList數據,且通過ip進行重排序的列表
    3. 第114行,candidateHosts.get(endpointIdx++),初始endpointIdx=0,獲取列表中第1個元素作為host請求
    4. 第120行,獲取返回的response結果,如果返回的狀態碼是200,則將此次請求的host設置到全局的delegate變量中
    5. 第133行,執行到這裏說明第120行執行的response返回的狀態碼不是200,也就是執行失敗,將全局變量delegate中的數據清空
    6. 再次循環第一步,此時endpointIdx=1,獲取列表中的第二個元素作為host請求
    7. 依次執行,第100行的循環條件numberOfRetries=3,最多重試2次就會跳出循環

    我們還可以第123和129行,這也正是我們業務拋出來的日誌信息,所有的一切都對應上了。

    總結

    感謝你看到這裏,相信你已經清楚了開頭提問的問題。

    上面已經分析完了Eureka集群下Client端請求時負載均衡的選擇以及集群故障時自動重試請求的實現原理。

    如果還有不懂的問題,可以添加我的微信或者給我公眾號留言,我會單獨和你討論交流。

    本文首發自:一枝花算不算浪漫 公眾號,如若轉載請在文章開頭標明出處,如需開白可直接公眾號回復即可。

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

    【其他文章推薦】

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

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※台北網頁設計公司全省服務真心推薦

    ※想知道最厲害的網頁設計公司"嚨底家"!

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※推薦評價好的iphone維修中心

  • Jmeter(十二) – 從入門到精通 – JMeter邏輯控制器 – 終篇(詳解教程)

    Jmeter(十二) – 從入門到精通 – JMeter邏輯控制器 – 終篇(詳解教程)

    1.簡介

    Jmeter官網對邏輯控制器的解釋是:“Logic Controllers determine the order in which Samplers are processed.”。

    意思是說,邏輯控制器可以控制採樣器(samplers)的執行順序。由此可知,控制器需要和採樣器一起使用,否則控制器就沒有什麼意義了。放在控制器下面的所有的採樣器都會當做一個整體,執行時也會一起被執行。

    JMeter邏輯控制器可以對元件的執行邏輯進行控制,除僅一次控制器外,其他可以嵌套別的種類的邏輯控制器。

    2.邏輯控制器分類

    JMeter中的Logic Controller分為兩類:
    (1)控制測試計劃執行過程中節點的邏輯執行順序,如:Loop Controller、If Controller等;
    (2)對測試計劃中的腳本進行分組、方便JMeter統計執行結果以及進行腳本的運行時控制等,如:Throughput Controller、Transaction Controller。

    3.預覽邏輯控制器 

    首先我們來看一下JMeter的邏輯控制器,路徑:線程組(用戶)->添加->邏輯控制器(Logic Controller);我們可以清楚地看到JMeter5中共有17個邏輯控制器,如下圖所示:

    如果上圖您看得不是很清楚的話,宏哥總結了一個思維導圖,關於JMeter5的邏輯控制器類型,如下圖所示: 

     通過以上的了解,我們對邏輯控制器有了一個大致的了解和認識。下面宏哥就給小夥伴或則童鞋們分享講解一些通常在工作中會用到的邏輯控制器。 

    4.常用邏輯控制器詳解

      這一小節,宏哥就由上而下地詳細地講解一下常用的邏輯控制器。

    4.1Runtime Controller

    運行控制器用來控制其子元件的執行時長。市場單位是秒。

     1、我們先來看看這個Runtime Controller長得是啥樣子,路徑:線程組 > 添加 > 邏輯控制器 > 運行控制器,如下圖所示:

    2、關鍵參數說明如下:

    Name:名稱,可以隨意設置,甚至為空;

    Comments:註釋,可隨意設置,可以為空;

    Runtime:默認為1,去掉1則默認為0,此時不執行其節點下的元件。 與線程組中的調度器的持續時間 效果一致。不填 或 0,不會執行樣例

    4.1.1Runtime控制器控制其下取樣器執行2s

    1、創建測試計劃,設置 Runtime 控制器的運行時間 為 2,線程組設置默認不變,如下圖所示:

    Runtime 控制器設置

    線程組設置

    2、配置好以後,運行JMeter,然後查看結果樹,如下圖所示:

    4.1.2使用線程組中的調度器控制樣例運行3s

    1、創建測試計劃,設置 Runtime 控制器的運行時間 為 2,線程組設置運行時間3,如下圖所示:

    線程組設置

    Runtime 控制器設置

    2、配置好以後,運行JMeter,然後查看結果樹,如下圖所示:

    線程組設置3,Runtime控制器設置2,但是運行時間是2s。所以從上邊的運行時間得出結論:如果線程組中設置了持續時間,Runtime 控制器也設置了 運行時間,那麼會優先於線程組中的設置。

    4.2Simple Controller

    Simple Controller用來指定了一個執行單元,它不改變元件的執行順序。在它下邊還可以嵌套其他控制器。簡單控制器可以編輯只有名稱和註釋。就像他的名字一樣,簡單,可以理解為一個文件夾,就是分組用的,沒有其他特殊功能,但相比不添加簡單控制器,區別在於簡單控制器可以被模塊控制器所引用。其作用就是分組,比如QQ好友列表,可分為家人、同學、等。一般是請求較多,需要分組時採用。

     1、我們先來看看這個Simple Controller長得是啥樣子,路徑:線程組 > 添加 > 邏輯控制器 > 簡單控制器,如下圖所示:

    2、關鍵參數說明如下:

    Name:名稱,可以隨意設置,甚至為空;

    Comments:註釋,可隨意設置,可以為空。

    4.2.1簡單實例

    1、創建測試計劃,線程組設置循環10,如下圖所示:

    2、配置好以後,運行JMeter,然後查看結果樹,如下圖所示:

    4.3Throughput Controller

    用來控制其下元件的執行次數,並無控制吞吐量的功能,想要控制吞吐量可以使用Constant Throughput Timer,後邊會講解到。吞吐量控制器有兩種模式:Total Executions:設置運行次數與Percent Executions:設置運行比例(1~100之間)。

    1、我們先來看看這個Throughput Controller長得是啥樣子,路徑:線程組 > 添加 > 邏輯控制器 > 吞吐量控制器,如下圖所示: 

    2、關鍵參數說明如下:

    Name:名稱,可以隨意設置,甚至為空;

    Comments:註釋,可隨意設置,可以為空;

    Total Executions:執行百分比(1-100);

    percent Executions:執行數量;

    Throughput:根據上邊選擇的方式填寫,百分比為0~100;

    Per User:線程數,當選Total Executions時,是線程數;當選percent Executions時,是線程數*循環次數。

    4.3.1不勾選Per User

    1、線程組中設置 線程數量 2,循環次數 10,吞吐量控制器 設置 Total Executions,吞吐量設置為 2,其下添加一個取樣器,如下圖所示:

    2、配置好以後,運行JMeter,然後查看結果樹(執行了2次),如下圖所示:

    3、現在將 吞吐量控制器 設置為百分比的控制方式,吞吐量設置為:50%,如下圖所示:

    4、配置好以後,點擊“保存”運行JMeter,然後查看結果樹(執行了10次,計算方式:10=吞吐量50% * 循環次數10 * 線程數 2),如下圖所示:

    4.3.2勾選Per User

    1、線程組中設置 線程數量 2,循環次數 10,吞吐量控制器 設置 Total Executions,吞吐量設置為 2,其下添加一個取樣器,勾選Per User,如下圖所示:

    線程組設置

    吞吐量控制器

    2、配置好以後,點擊“保存”,運行JMeter,然後查看結果樹(總共執行了4次,其中吞吐量設置為2,執行2次,線程設置為2,執行2次,總共4次),函數 __threadNum 只是簡單地返回當前線程的編號,如下圖所示:

    3、現在將 吞吐量控制器 設置為百分比的控制方式,吞吐量設置為:50,如下圖所示:

    4、配置好以後,點擊“保存”運行JMeter,然後查看結果樹(執行了10次,計算方式:10=吞吐量50% * 循環次數10 * 線程數 2),如下圖所示:

    綜上所述:

    勾選Per User:

    1.線程數*循環次數>=線程數*吞吐量時,Total Executions模式的執行次數=線程數*吞吐量。

    2.線程數*循環次數<線程數*吞吐量時,Total Executions模式的執行次數=當線程數*循環次數。

    不勾選Per User:

    1.線程數*循環次數<=吞吐量時,Total Executions模式的執行次數=線程數*循環次數。

    2.線程數*循環次數>吞吐量時,Total Executions模式的執行次數=吞吐量。

    l Percent Executions:設置運行比例(1~100之間),單位為%

    不管Per User是否勾選,按Percent Executions模式的執行次數都不受Per User影響,Percent Executions模式的執行次數=線程數*循環次數*吞吐量%。(循環次數=線程組循環次數*循環控制器循環次數)

    l Per User:勾選該項的話則按虛擬用戶數(線程數)來計算執行次數,不勾選則按所有虛擬用戶數來計算執行次數

    測試計劃

    序號 線程數 循環次數 模式 Throughput Per User 執行次數
    1 2 10 Percent 50 Y 10
    2 2 10 Percent 50 N 10
    3 2 10 Total 7 Y 14
    4 2 10 Total 7 N 7
    5 2 2 Total 7 Y 4
    6 2 2 Total 7 N 4

    下面說明一下這6個場景:
    (1)序號1和2場景,Per User 對總執行次數沒有影響。
    (2)序號3場景,Per User勾選,每個虛擬用戶(線程)執行7次,共執行14次。
    (3)序號4場景,Per User不勾選,則所有虛擬用戶執行7次。
    (4)序號5場景,Per User勾選,每個虛擬用戶(線程)執行7次,共執行14次,由於Thread Group計劃循環次數是4(2線程*2循環)次,所以最多只能執行4次。
    (5)序號6場景,Per User不勾選,所有虛擬用戶執行7次,由於Thread Group計劃循環次數是4(2線程*2循環)次,所以最多只能執行4次。

    4.4Module Controller

    模塊控制器可以快速的切換腳本,不用來回的新建,方便腳本調試。 

    可以理解為引用、調用的意思,執行內容為Module To Run種所選的內容,引用範圍為當前測試計劃內的測試片段、邏輯控制器<模塊控制器除外>
    被引用的邏輯控制器、測試片段可以為禁用狀態,被引用后仍然會被執行。
    可以將模塊控制器與包括控制器一起學習比較,模塊控制器是從內部文件中引用,引用上相對比較靈活,可以只引用部分測試片段或模塊內容,包括控制器是從外部文件引用,只能引用整個測試片段的內容。
    注意:被應用的模塊位置不可隨意變更,變更後會執行時出現提示引用失敗
    找到目標元素:快速查找與跳轉的作用,點擊後會立即跳轉到所選的邏輯控制器的內容詳情

    1、我們先來看看這個Module Controller長得是啥樣子,路徑:線程組 > 添加 > 邏輯控制器 >  模塊控制器,如下圖所示: 

    2、關鍵參數說明如下:

    Name:名稱,可以隨意設置,甚至為空;

    Comments:註釋,可隨意設置,可以為空;

    Forever:勾選上這一項表示一直循環下去。

    4.4.1實例

    1、創建測試計劃,添加兩個測試片段,並且在每個測試片段下添加一個取樣器,然後,添加線程組,再添加模塊控制器,最後添加查看結果樹,如下圖所示:

    2、配置模塊控制器,選擇第一個測試片段,如下圖所示:

    3、配置好以後,點擊“保存”運行JMeter,然後查看結果樹(執行了第1個測試片段的取樣器),如下圖所示:

    4、配置模塊控制器,選擇第二個測試片段,如下圖所示: 

    5、配置好以後,點擊“保存”運行JMeter,然後查看結果樹(執行了第2個測試片段的取樣器),如下圖所示:

    4.5Switch Controller

    Switch Controller:開關控制器,通過其下樣例順序數值或名稱 控制執行某一個樣例。

     1、我們先來看看這個if Controller長得是啥樣子,路徑:線程組 > 添加 > 邏輯控制器 > 如果 (if) 控制器,如下圖所示:

    2、關鍵參數說明如下:

    Name:名稱,可以隨意設置,甚至為空;

    Comments:註釋,可隨意設置,可以為空;

    Switch Value:指定請求的索引或者名稱,索引從0開始,如果沒有賦值,或者索引超過請求個數的話就執行第0個請求。可以是数字,也可以是字符,為字符時匹配取樣器名稱,如果匹配不上就會默認並找取樣器名稱為default的取樣器,如果沒有則不運行。

    4.5.1數值

    數值:表示將執行其下第 數值+1個取樣器,例如:填1,將執行第2個取樣器;填0或者不填,將執行第1個取樣器;數值超出其下取樣器數目時,執行第1個取樣器。

    1、創建一個測試計劃,設置線程組和Switch控制器,如下圖所示:

    線程組

    Switch控制器

    2、配置好以後,點擊“保存”運行JMeter,然後查看結果樹(執行了第3<數值+1>個取樣器),如下圖所示:

    3、修改Switch控制器的數值為0或者不填,如下圖所示:

    4、配置好以後,點擊“保存”運行JMeter,然後查看結果樹(執行了第1<數值為0或者不填,執行第1個取樣器>個取樣器),如下圖所示:

    4.5.2字符

    1、創建一個測試計劃,設置線程組和Switch控制器(直接使用取樣器名字),如下圖所示:

    線程組

    Switch控制器

    2、配置好以後,點擊“保存”運行JMeter,然後查看結果樹(執行了使用名字的取樣器),如下圖所示:

    5.小結

    好了,今天關於邏輯控制器的上篇就講解到這裏,這一篇主要介紹了 Runtime Controller 、 Simple Controller 、Throughput ControllerModule Controller 和  Switch Controller

     

    您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波  推薦  不要忘記哦!!!

    別忘了點 推薦 留下您來過的痕迹

     

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

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

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

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

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案