在地生產降低成本,特斯拉宣布 Model 3 中國市場降價 9%

電動車製造商特斯拉宣布上海超級工廠製造的 Model 3 售價降低 9%,降價後 Model 3 起價為 32.38 萬人民幣,加入政府補貼,消費者購入價不到 30 萬人民幣。此次降價主要得益於本地化製造降低成本。

Model 3 在中國市場的起價原為 35.58 萬人民幣,自上海超級工廠建成投產後,特斯拉曾多次公開表示,會按照成本調整調降部分車款售價。目前特斯拉中國官網已調降 Model 3 售價,起價降到 32.38 萬人民幣,且購買電動車還可享受政府補貼,購入價為 29.9 萬人民幣,這是特斯拉電動車在中國市場售價首次低於 30 萬人民幣。

目前特斯拉已啟動上海超級工廠製造的電動車交付工作,2019 年 12 月 30 日首批本地製造的 Model 3 電動車交付給 15 位特斯拉員工,2020 年 1 月 7 日正式開始向客戶交付新車,距離上海超級工廠開工建設僅一年。

特斯拉聲明,除了 Model 3 起價降低,部分選配功能也降低價格,包括車身顏色、車輪等。隨著上海超級工廠產能逐步提升,有望在 2020 年將本地製造的電動車售價降低 20%,約有 30% 零組件達成本地化採購,未來將提升到 100%,整車製造成本也有望持續降低。

受上海超級工廠啟動新車交車的消息利好,近日特斯拉股價持續走高,超過每股 430 美元,創下歷史新高。

(合作媒體:。首圖來源:)

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

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

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

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

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

電動車餅擴大,電池材料需擴產?

不讓特斯拉專美於前,歐美傳統車廠近2年積極推出純電動車車款,搶攻未來燃油車退場後的新車市商機,而在此一商機之下,市場對於鋰電池需求當然將有顯著增加,對台廠的電池材料廠商而言,受惠程度又是如何?今年是否有商機?

電動車的餅有多大?

傳統歐美車廠積極布局純電動車市場,福斯集團從Audi到VW兼具高價至平價車款,更有一長串ID系列車款等待登場,計畫至2028年將推出逾70款電動車;福特汽車計畫今年要讓銷售的汽車25%都是純電動與混合動力車,並預告在未來所有主流車款都將擁有電動車版本,2022年前要有40款混合動力車,其中16款為純電動車。

通用(GM)汽車也宣布計畫將旗下悍馬車品牌通過電動皮卡與電動車版本展開「復興」,預計將與韓國鋰電池大廠LG在美國展開電池組建廠計畫;而更不止歐美車廠對純電動車有野心與布局,剛落幕的美國CES展上,Sony一台電動車概念車也是目光焦點,不難想見,未來這塊市場前景發展將會更為蓬勃。

即使先不談歐美車廠待推出的電動車款,不願放過中國車市這塊大餅的特斯拉,上海廠進度也優於市場預期,未來無論是在歐美車款的數量爆發,還是即將登場的上海特斯拉廠,對電池材料的台廠,是否有可期待的商機?

中碳:短期拓展應用端,車市需長久看待

中碳布局介相石墨碳微球產品多年,由於石墨球具有高效率、高密度、高放電能力與循環壽命佳等優點,是電動車、儲能用鋰電池關鍵負極材料;2019年6月中碳的屏南廠與小港新線開始投產,拉高中碳介相碳微球年產能來到7,500噸。

針對電池材料市況上,中碳表示,中國近期電動汽車狀況仍不容樂觀,預期今年中國電動車供應鏈還是會有壓力,目前中碳評估中國客戶出貨狀況應該與去年相當;長線中碳認同電動車仍會是大勢所趨,但也評估消費者還需時間接受電動車產品。

近期在產能去化上,中碳也積極布局電動車以外應用,在儲能領域方面,中碳則評估近期正在針對日、韓客戶展開認證,韓國已有1家完成簽約,日本則有3家客戶在進行,其中包括有日本營造業廠商,因為日本法規要求建案當中需要有儲能設備因應天災,因此促使中碳與客戶牽上線,現階段已在測試,另外也有1家大廠11月即在測試,近期應該就會出貨。

至於上海特斯拉廠方面,中碳指出,就特斯拉既往與Panasonic的合作來看,考量到系統需求,電池材料的供應上不可能有大幅調整,避免影響到整體電力系統穩定度,且過往材料供應端就包含有中、韓廠商,估計會維持由既有廠商出貨。

美琪瑪:去年擴產已相對充分,短期無計畫

針對能否切入上海特斯拉廠供應鏈,美琪瑪表示公司電池材料客戶以日系廠商為主,但美琪瑪指出硫酸鈷、硫酸鎳為極為上游的材料,主要是出往前驅體製造商,後續客戶產品銷至哪一間鋰電池製造商,又與哪間車廠合作,追蹤較為困難。

而美琪瑪也評估,就未來全球市場上,需要鋰電池驅動的電動車車款還是持續增加,長線市況仍屬樂觀,而去年也已經因應需求擴充硫酸鎳產能3成,並且完成客戶認證,應可滿足近期客戶需求,短期評估不會擴產,不過後續如果有急單需求,也可緊急擴產因應,擴產所需時間與資本支出都不會太高;目前美琪瑪旗下美戶硫酸鎳年產能來到26,000噸、硫酸鈷約4,000噸。

(本文內容由 授權使用。首圖來源:)

 

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

【其他文章推薦】

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

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

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

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

南韓電池廠搶進歐洲電動車供應鏈

隨著產業與市場觀念的成熟,歐洲電動車市場自2015年下半年起進入暴漲期,也引來供應鏈相關業者的關注。

Samsung SDI已於五月底在匈牙利完成電動車用動力電池的生產工廠,預計2018年第二季投產,年產能可供應5萬輛電動車之所需。

另一家南韓大廠LG Chem也投資4,000億韓圜在波蘭的Wroclaw市展開動力電池廠的建設工程,預計2018年底完工,年產能可供應至少10萬輛電動車的電池需求。

SK Innovation稍早也宣布將於歐洲設廠,以為德國客戶戴姆勒就近供貨。戴姆勒集團已發表新電動車系副品牌「EQ」,旗下的Mercedes-Benz也有多款電動車產品。此外,戴姆勒已在2014年買下德國電池廠ACCUMOTIVE的股份,並於今年展開了新一期電池工廠的建設。

(照片來源:Commons Wikimedia)

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

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

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

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

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

電動車前景看好,中國印度發展空間大

國際能源署(International Energy Agency)發佈報告指出,電動車市場規模從無擴展到200萬輛,僅花了五年時間達成,反映電動車爆發力之強大。

報告指出,即便全球去年電動車註冊上路數量跳增60%,但電動車也只占整體輕型車輛總數的0.2%,這意謂著電動車還有極大發展空間。

中國目前是全球最大電動車市場,去年有超過四成的電動車賣到中國,是美國的兩倍多,IEA說這明顯是環保政策所造成。

談到政策,全球人口第二多的印度為積極響應「巴黎氣候協議」,並同時對抗空氣污染,近期剛出台的新政策設定2030年後,印度國內將只准賣電動車,這對其它國家而言,幾乎是不可能的任務。

美國電動車廠特斯拉已注意到印度市場潛力,其創辦人馬斯克(Elon Musk)在政策發佈後,大力讚揚印度政府對環保產業的支持。另一方面,對於川普不顧民意毀棄巴黎協議,馬斯克也以退出政策顧問團表示抗議。

(本文內容由授權使用。圖片出處:public domain CC0)

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

【其他文章推薦】

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

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

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

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

Tesla拓中國市場,於中國開設首座電動車廠

特斯拉計畫在中國開設首座電動車廠,傳已接近達成協議,若確定成案,特斯拉將能省下25%的進口關稅,長驅直入中國電動車市場。

外電報導指出,特斯拉正與上海市政府協商,電動車廠可能落腳在浦東臨港產業園區,最快本周內可完成簽約。(路透社)

按照現有規定,特斯拉必須以合資方式在中國經營,因此預料特斯拉將會與一家本土廠商合作。值得一提的是,中國網絡巨頭騰訊三月曾斥資近18億美元,成為特斯拉第五大股東。

特斯拉去年中國營收三級跳,來到10億多美元,凸顯中國市場潛力,以及特斯拉深耕中國市場的必要性。中國2015年已超越美國,成為全球最大零排放汽車市場。

(本文內容由授權使用。圖片出處:public domain CC0)

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

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

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

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

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

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

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

附010.Kubernetes永久存儲之GlusterFS超融合部署

一 前期準備

1.1 基礎知識


在Kubernetes中,使用GlusterFS文件系統,操作步驟通常是:

創建brick–>創建volume–>創建PV–>創建PVC–>Pod掛載PVC

如果要創建多個PV,則需要手動重複執行,可通過Heketi管理glusterfs。

Heketi是用來管理GlusterFS卷的生命周期的,並提供了一個RESTful API接口供Kubernetes調用,因為GlusterFS沒有提供API調用的方式,所以我們藉助heketi。通過Heketi,Kubernetes可以動態配置GlusterFS卷,Heketi會動態在集群內選擇bricks創建所需的volumes,確保數據的副本會分散到集群不同的故障域內,同時Heketi還支持GlusterFS多集群管理,便於管理員對GlusterFS進行操作。

Heketi要求在每個glusterfs節點上配備裸磁盤,用於Heketi創建PV和VG。通過Hekete,Kubernetes中使用PV步驟為:

創建StorageClass–>創建PVC–>Pod掛載PVC

這種方式稱為基於StorageClass的動態資源供應。

提示:本實驗基於Kubernetes部署glusterfs,同時glusterfs管理組件Heketi也使用Kubernetes部署。

1.2 架構示意



提示:本實驗不涉及Kubernetes部署,Kubernetes部署參考001-019。

1.3 相關規劃






主機

IP

磁盤

備註

k8smaster01

172.24.8.71

Kubernetes master節點

k8smaster02

172.24.8.72

Kubernetes master節點

k8smaster03

172.24.8.73

Kubernetes master節點

k8snode01

172.24.8.74

sdb

Kubernetes node節點

glusterfs節點

k8snode02

172.24.8.75

sdb

Kubernetes node節點

glusterfs節點

k8snode03

172.24.8.76

sdb

Kubernetes node節點

glusterfs節點

磁盤規劃

k8snode01 k8snode02 k8snode03
PV sdb1 sdb1 sdb1





1.4 部署條件

超融合部署需要具有已經部署的Kubernetes集群管理訪問權限。如果Kubernetes節點滿足以下要求,則可以選擇將GlusterFS作為超融合服務部署:

  • 必須至少有三個節點用於glusterfs;
  • 每個節點必須至少連接一個裸磁盤設備,以供heketi使用。這些設備上不得包含任何數據,heketi將會格式化和分區此設備;
  • 每個節點必須打開以下端口才能進行GlusterFS通信:
    • 2222:GlusterFS pod的sshd端口;
    • 24007:GlusterFS守護程序;
    • 24008:GlusterFS管理;
    • 49152——49251:主機上每個卷的每個brick都需要有獨立的端口。對於每塊新brick,將從49152開始使用一個新端口。建議每台主機的默認範圍為49152-49251,也可根據需要進行調整。

  • 必須加載以下內核模塊:
    • dm_snapshot
    • dm_mirror
    • dm_thin_pool

  • 對於內核模塊,可通過lsmod | grep <name>查看模塊是否存在,並modprobe <name>加載給定的模塊。
  • 每個節點都要求該mount.glusterfs命令可用。在所有基於Red Hat的操作系統下,此命令由glusterfs-fuse軟件包提供。


注意:節點上安裝的GlusterFS客戶端版本應盡可能接近服務器的版本。要獲取已安裝的版本,可通過glusterfs –version或kubectl exec <pod> — glusterfs –version命令查看。

1.5 其他準備


所有節點NTP配置;

所有節點添加相應主機名解析:

  1 172.24.8.71 k8smaster01
  2 172.24.8.72 k8smaster02
  3 172.24.8.73 k8smaster03
  4 172.24.8.74 k8snode01
  5 172.24.8.75 k8snode02
  6 172.24.8.76 k8snode03



注意:若非必要,建議關閉防火牆和SELinux。

二 規劃裸設備

2.1 確認磁盤

  1 [root@k8snode01 ~]# fdisk /dev/sdb -l		#檢查sdb是否為裸磁盤

三 安裝glusterfs-fuse

3.1 安裝相應RPM源

  1 [root@k8snode01 ~]# yum -y install centos-release-gluster
  2 [root@k8snode01 ~]# yum -y install glusterfs-fuse		#安裝glusterfs-fuse



提示:k8snode01、k8snode02、k8snode03類似操作,根據1.4要求安裝glusterfs-fuse組件;

安裝相應源之後,會在/etc/yum.repos.d/目錄多出文件CentOS-Storage-common.repo,內容如下:

# CentOS-Storage.repo

#

# Please see http://wiki.centos.org/SpecialInterestGroup/Storage for more

# information




[centos-storage-debuginfo]

name=CentOS-$releasever – Storage SIG – debuginfo

baseurl=http://debuginfo.centos.org/$contentdir/$releasever/storage/$basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage

3.2 加載相應模塊

  1 [root@k8snode01 ~]# cat > /etc/sysconfig/modules/glusterfs.modules <<EOF
  2 #!/bin/bash
  3 
  4 for kernel_module in dm_snapshot dm_mirror dm_thin_pool;do
  5     /sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1
  6     if [ \$? -eq 0 ]; then
  7         /sbin/modprobe \${kernel_module}
  8     fi
  9 done;
 10 EOF
 11 [root@k8snode01 ~]# chmod +x /etc/sysconfig/modules/glusterfs.modules
 12 [root@k8snode01 ~]# lsmod |egrep "dm_snapshot|dm_mirror|dm_thin_pool"	#所有glusterfs node節點檢查



提示:可通過modprobe <name>加載給定的模塊。

四 Kubernetes部署glusterfs

4.1 Node tag

  1 [root@k8smaster01 ~]# kubectl label nodes k8snode01 storagenode=glusterfs
  2 [root@k8smaster01 ~]# kubectl label nodes k8snode02 storagenode=glusterfs
  3 [root@k8smaster01 ~]# kubectl label nodes k8snode03 storagenode=glusterfs




提示:在後續使用DaemonSet部署時候kube-templates/glusterfs-daemonset.yaml存在如下針對label的Selector:

spec:

nodeSelector:

storagenode: glusterfs

4.2 下載glusterfs-Kubernetes

  1 [root@k8smaster01 ~]# yum -y install git
  2 [root@k8smaster01 ~]# git clone https://github.com/gluster/gluster-kubernetes.git


4.3 修改glusterfs拓撲

  1 [root@k8smaster01 ~]# cd gluster-kubernetes/deploy/
  2 [root@k8smaster01 deploy]# cp topology.json.sample topology.json
  3 [root@k8smaster01 deploy]# vi topology.json


  1 {
  2   "clusters": [
  3     {
  4       "nodes": [
  5         {
  6           "node": {
  7             "hostnames": {
  8               "manage": [
  9                 "k8snode01"
 10               ],
 11               "storage": [
 12                 "172.24.8.74"
 13               ]
 14             },
 15             "zone": 1
 16           },
 17           "devices": [
 18             "/dev/sdb"
 19           ]
 20         },
 21         {
 22           "node": {
 23             "hostnames": {
 24               "manage": [
 25                 "k8snode02"
 26               ],
 27               "storage": [
 28                 "172.24.8.75"
 29               ]
 30             },
 31             "zone": 1
 32           },
 33           "devices": [
 34             "/dev/sdb"
 35           ]
 36         },
 37         {
 38           "node": {
 39             "hostnames": {
 40               "manage": [
 41                 "k8snode03"
 42               ],
 43               "storage": [
 44                 "172.24.8.76"
 45               ]
 46             },
 47             "zone": 1
 48           },
 49           "devices": [
 50             "/dev/sdb"
 51           ]
 52         }
 53       ]
 54     }
 55   ]
 56 }


提示:heketi配置文件及介紹參考《附009.Kubernetes永久存儲之GlusterFS獨立部署》。

若需要修改heketi的暴露方式,若需要修改為NodePort,可參考https://lichi6174.github.io/glusterfs-heketi/。

所有部署相關yaml位於/root/gluster-kubernetes/deploy/kube-templates,本實驗採用默認參數。

4.4 配置heketi

  1 [root@k8smaster01 deploy]# cp heketi.json.template heketi.json
  2 [root@k8smaster01 deploy]# vi heketi.json
  3 {
  4     "_port_comment": "Heketi Server Port Number",
  5     "port" : "8080",
  6 
  7     "_use_auth": "Enable JWT authorization. Please enable for deployment",
  8     "use_auth" : true,				#開啟用戶認證
  9 
 10     "_jwt" : "Private keys for access",
 11     "jwt" : {
 12         "_admin" : "Admin has access to all APIs",
 13         "admin" : {
 14             "key" : "admin123"			#管理員密碼
 15         },
 16         "_user" : "User only has access to /volumes endpoint",
 17         "user" : {
 18             "key" : "xianghy"			#用戶密碼
 19         }
 20     },
 21 
 22     "_glusterfs_comment": "GlusterFS Configuration",
 23     "glusterfs" : {
 24 
 25         "_executor_comment": "Execute plugin. Possible choices: mock, kubernetes, ssh",
 26         "executor" : "${HEKETI_EXECUTOR}",	        #本實驗使用Kubernetes方式
 27 
 28         "_db_comment": "Database file name",
 29         "db" : "/var/lib/heketi/heketi.db",	        #heketi數據存儲
 30 
 31         "kubeexec" : {
 32             "rebalance_on_expansion": true
 33         },
 34 
 35         "sshexec" : {
 36             "rebalance_on_expansion": true,
 37             "keyfile" : "/etc/heketi/private_key",
 38             "port" : "${SSH_PORT}",
 39             "user" : "${SSH_USER}",
 40             "sudo" : ${SSH_SUDO}
 41         }
 42     },
 43 
 44     "backup_db_to_kube_secret": false
 45 }


4.5 相關修正


新版Kubernetes的# kubectl get pod命令無–show-all選項,需要如下操作修正部署gk-deploy腳本。

  1 [root@k8smaster01 deploy]# vi gk-deploy
  2 924 #heketi_pod=$(${CLI} get pod --no-headers --show-all --selector="heketi" | awk '{print $1}')
  3 925 heketi_pod=$(${CLI} get pod --no-headers --selector="heketi" | awk '{print $1}')






由於國內glusterfs鏡像可能無法pull,建議通過VPN等方式提前pull鏡像,然後上傳至所有glusterfs node節點。

  1 [root@VPN ~]# docker pull gluster/gluster-centos:latest
  2 [root@VPN ~]# docker pull heketi/heketi:dev
  3 [root@VPN ~]# docker save -o gluster_latest.tar gluster/gluster-centos:latest
  4 [root@VPN ~]# docker save -o heketi_dev.tar heketi/heketi:dev
  5 [root@k8snode01 ~]# docker load -i gluster_latest.tar
  6 [root@k8snode01 ~]# docker load -i heketi_dev.tar
  7 [root@k8snode01 ~]# docker images
  8 


4.6 正式部署

  1 [root@k8smaster01 deploy]# ./gk-deploy -h			#查看部署參數
  2 [root@k8smaster01 deploy]# kubectl create ns heketi		#建議部署在獨立的namespace中
  3 [root@k8smaster01 deploy]# ./gk-deploy -g -n heketi topology.json --admin-key admin123 --user-key xianghy
  4 ……
  5 Do you wish to proceed with deployment?
  6 
  7 [Y]es, [N]o? [Default: Y]: y





提示:部署腳本更多參數參考:https://github.com/gluster/gluster-kubernetes/blob/master/deploy/gk-deploy。

注意:若部署失敗,需要通過下方式徹底刪除后重新部署:

  1 [root@k8smaster01 deploy]# ./gk-deploy --abort --admin-key admin123 --user-key xianghy -y -n heketi
  2 [root@k8smaster01 deploy]# kubectl delete -f kube-templates/ -n heketi



glusterfs node節點需要執行如下徹底清理:

  1 [root@k8snode01 ~]# dmsetup ls
  2 [root@k8snode01 ~]# dmsetup remove_all
  3 [root@k8snode01 ~]# rm -rf /var/log/glusterfs/
  4 [root@k8snode01 ~]# rm -rf /var/lib/heketi
  5 [root@k8snode01 ~]# rm -rf /var/lib/glusterd/
  6 [root@k8snode01 ~]# rm -rf /etc/glusterfs/
  7 [root@k8snode01 ~]# dd if=/dev/zero of=/dev/sdb bs=512k count=1
  8 [root@k8snode01 ~]# wipefs -af /dev/sdb


4.7 Kubernetes集群查看驗證

  1 [root@k8smaster01 ~]# kubectl get nodes --show-labels | grep -E 'NAME|node'
  2 [root@k8smaster01 ~]# kubectl get all -n heketi




  1 [root@k8smaster01 ~]# kubectl get pods -o wide -n heketi



4.8 gluster集群查看驗證

  1 [root@k8smaster01 ~]# kubectl exec -it heketi-65f4555d74-72hrf -n heketi -- heketi-cli cluster list --user admin --secret admin123								#集群列表
  2 [root@k8smaster01 ~]# kubectl -n heketi exec -ti heketi-65f4555d74-72hrf /bin/bash                               [root@heketi-65f4555d74-72hrf /]# heketi-cli cluster list --user admin --secret admin123	#進入heketi容器查看
  3 [root@k8smaster01 ~]# curl http://10.254.111.219:8080/hello
  4 Hello from Heketi



注意:使用4.6腳本為一鍵部署,也可使用gluster-kubernetes/deploy/目錄下的文件,分開逐步部署,整理部署思路如下:

  1. 使用glusterfs-daemonset.json部署glusterfs DaemonSet;
  2. 對node節點進行打標籤;
  3. 使用heketi-service-account.json部署Heketi的服務帳戶;
  4. 對Heketi所創建的服務帳戶授權;
  5. 創建secret;
  6. 轉發本地8080端口至deploy-heketi。


獨立部署完整過程參考:https://jimmysong.io/kubernetes-handbook/practice/using-heketi-gluster-for-persistent-storage.html。

五 安裝heketi-cli


由於在master節點管理heketi需要進入heketi容器或者使用kubectl exec -ti 方式,建議直接在master節點安裝heketi客戶端,直接管理、

5.1 安裝heketi服務

  1 [root@k8smaster01 ~]# yum -y install centos-release-gluster
  2 [root@k8smaster01 ~]# yum -y install heketi-client


5.2 配置heketi

  1 [root@k8smaster01 ~]# echo "export HEKETI_CLI_SERVER=http://$(kubectl get svc heketi -n heketi -o go-template='{{.spec.clusterIP}}'):8080" >> /etc/profile.d/heketi.sh
  2 [root@k8smaster01 ~]# echo "alias heketi-cli='heketi-cli --user admin --secret admin123'" >> ~/.bashrc
  3 [root@k8smaster01 ~]# source /etc/profile.d/heketi.sh
  4 [root@k8smaster01 ~]# source ~/.bashrc
  5 [root@k8smaster01 ~]# echo $HEKETI_CLI_SERVER
  6 http://heketi:8080


5.3 集群管理

  1 [root@k8smaster01 ~]# heketi-cli cluster list
  2 Clusters:
  3 Id:67004a06fbcb4fa525bcec1fbaa9ef2d [file][block]
  4 [root@k8smaster01 ~]# heketi-cli cluster info 67004a06fbcb4fa525bcec1fbaa9ef2d	#集群詳細信息
  5 Cluster id: 67004a06fbcb4fa525bcec1fbaa9ef2d
  6 Nodes:
  7 40cdd4c1d0c389939193d6dea3c5bfe8
  8 62873c54cf61025fda91e6d44433378b
  9 d48986357840d28653304e7170599da5
 10 Volumes:
 11 5f15f201d623e56b66af56313a1975e7
 12 Block: true
 13 
 14 File: true
 15 [root@k8smaster01 ~]# heketi-cli topology info 67004a06fbcb4fa525bcec1fbaa9ef2d	#查看拓撲信息
 16 [root@k8smaster01 ~]# heketi-cli node list					        #查看所有node
 17 Id:40cdd4c1d0c389939193d6dea3c5bfe8     Cluster:67004a06fbcb4fa525bcec1fbaa9ef2d
 18 Id:62873c54cf61025fda91e6d44433378b     Cluster:67004a06fbcb4fa525bcec1fbaa9ef2d
 19 Id:d48986357840d28653304e7170599da5     Cluster:67004a06fbcb4fa525bcec1fbaa9ef2d
 20 [root@k8smaster01 ~]# heketi-cli node info 40cdd4c1d0c389939193d6dea3c5bfe8  	#node節點信息
 21 [root@k8smaster01 ~]# heketi-cli volume create --size=2 --replica=2		        #默認為3副本的replica模式



  1 [root@k8smaster01 ~]# heketi-cli volume list					#列出所有卷
  2 [root@k8smaster01 ~]# heketi-cli volume info fc296ab350dcc36e00dd3b3643a04645	#卷信息
  3 [root@k8smaster01 ~]# heketi-cli volume delete fc296ab350dcc36e00dd3b3643a04645	#刪除卷


六 Kubernetes動態掛載glusterfs

6.1 StorageClass動態存儲


kubernetes共享存儲provider模式:

靜態模式(Static):集群管理員手工創建PV,在定義PV時設置後端存儲的特性;

動態模式(Dynamic):集群管理員不需要手工創建PV,而是通過StorageClass的設置對後端存儲進行描述,標記為某種”類型(Class)”;此時要求PVC對存儲的類型進行說明,系統將自動完成PV的創建及與PVC的綁定;PVC可以聲明Class為””,說明PVC禁止使用動態模式。

基於StorageClass的動態存儲供應整體過程如下圖所示:


  1. 集群管理員預先創建存儲類(StorageClass);
  2. 用戶創建使用存儲類的持久化存儲聲明(PVC:PersistentVolumeClaim);
  3. 存儲持久化聲明通知系統,它需要一個持久化存儲(PV: PersistentVolume);
  4. 系統讀取存儲類的信息;
  5. 系統基於存儲類的信息,在後台自動創建PVC需要的PV;
  6. 用戶創建一個使用PVC的Pod;
  7. Pod中的應用通過PVC進行數據的持久化;
  8. 而PVC使用PV進行數據的最終持久化處理。


提示:關於Kubernetes的部署參考《附003.Kubeadm部署Kubernetes》。

6.2 定義StorageClass


關鍵字說明:

  • provisioner:表示存儲分配器,需要根據後端存儲的不同而變更;
  • reclaimPolicy: 默認即”Delete”,刪除pvc后,相應的pv及後端的volume,brick(lvm)等一起刪除;設置為”Retain”時則保留數據,若需刪除則需要手工處理;
  • resturl:heketi API服務提供的url;
  • restauthenabled:可選參數,默認值為”false”,heketi服務開啟認證時必須設置為”true”;
  • restuser:可選參數,開啟認證時設置相應用戶名;
  • secretNamespace:可選參數,開啟認證時可以設置為使用持久化存儲的namespace;
  • secretName:可選參數,開啟認證時,需要將heketi服務的認證密碼保存在secret資源中;
  • clusterid:可選參數,指定集群id,也可以是1個clusterid列表,格式為”id1,id2”;
  • volumetype:可選參數,設置卷類型及其參數,如果未分配卷類型,則有分配器決定卷類型;如”volumetype: replicate:3”表示3副本的replicate卷,”volumetype: disperse:4:2”表示disperse卷,其中‘4’是數據,’2’是冗餘校驗,”volumetype: none”表示distribute卷


提示:關於glusterfs各種不同類型的卷見《004.RHGS-創建volume》。

  1 [root@k8smaster01 ~]# echo -n "admin123" | base64		#將密碼轉換為64位編碼
  2 YWRtaW4xMjM=
  3 [root@k8smaster01 ~]# mkdir -p heketi
  4 [root@k8smaster01 ~]# cd heketi/
  5 [root@k8smaster01 ~]# vi heketi-secret.yaml			#創建用於保存密碼的secret
  6 apiVersion: v1
  7 kind: Secret
  8 metadata:
  9   name: heketi-secret
 10   namespace: heketi
 11 data:
 12   # base64 encoded password. E.g.: echo -n "mypassword" | base64
 13   key: YWRtaW4xMjM=
 14 type: kubernetes.io/glusterfs
 15 [root@k8smaster01 heketi]# kubectl create -f heketi-secret.yaml	#創建heketi
 16 [root@k8smaster01 heketi]# kubectl get secrets -n heketi
 17 NAME                                 TYPE                                  DATA   AGE
 18 default-token-6n746                  kubernetes.io/service-account-token   3      144m
 19 heketi-config-secret                 Opaque                                3      142m
 20 heketi-secret                        kubernetes.io/glusterfs               1      3m1s
 21 heketi-service-account-token-ljlkb   kubernetes.io/service-account-token   3      143m
 22 [root@kubenode1 heketi]# vim gluster-heketi-storageclass.yaml	#正式創建StorageClass
 23 apiVersion: storage.k8s.io/v1
 24 kind: StorageClass
 25 metadata:
 26   name: gluster-heketi-storageclass
 27 parameters:
 28   resturl: "http://10.254.111.219:8080"
 29   clusterid: "67004a06fbcb4fa525bcec1fbaa9ef2d"
 30   restauthenabled: "true"					#若heketi開啟認證此處也必須開啟auth認證
 31   restuser: "admin"
 32   secretName: "heketi-secret"					#name/namespace與secret資源中定義一致
 33   secretNamespace: "heketi"
 34   volumetype: "replicate:3"
 35 provisioner: kubernetes.io/glusterfs
 36 reclaimPolicy: Delete
 37 [root@k8smaster01 heketi]# kubectl create -f gluster-heketi-storageclass.yaml



注意:storageclass資源創建后不可變更,如修改只能刪除后重建。

  1 [root@k8smaster01 heketi]# kubectl get storageclasses		#查看確認
  2 NAME                          PROVISIONER               AGE
  3 gluster-heketi-storageclass   kubernetes.io/glusterfs   85s
  4 [root@k8smaster01 heketi]# kubectl describe storageclasses gluster-heketi-storageclass




6.3 定義PVC

  1 [root@k8smaster01 heketi]# vi gluster-heketi-pvc.yaml
  2 apiVersion: v1
  3 kind: PersistentVolumeClaim
  4 metadata:
  5   name: gluster-heketi-pvc
  6   annotations:
  7     volume.beta.kubernetes.io/storage-class: gluster-heketi-storageclass
  8 spec:
  9   accessModes:
 10   - ReadWriteOnce
 11   resources:
 12     requests:
 13       storage: 1Gi


注意:accessModes可有如下簡寫:

  • ReadWriteOnce:簡寫RWO,讀寫權限,且只能被單個node掛載;
  • ReadOnlyMany:簡寫ROX,只讀權限,允許被多個node掛載;
  • ReadWriteMany:簡寫RWX,讀寫權限,允許被多個node掛載。


  1 [root@k8smaster01 heketi]# kubectl create -f gluster-heketi-pvc.yaml -n heketi
  2 [root@k8smaster01 heketi]# kubectl get pvc -n heketi
  3 [root@k8smaster01 heketi]# kubectl describe pvc gluster-heketi-pvc -n heketi
  4 [root@k8smaster01 heketi]# kubectl get pv -n heketi
  5 [root@k8smaster01 heketi]# kubectl describe pv pvc-ca949559-094a-11ea-8b3c-000c29fa7a79 -n heketi




  1 [root@k8smaster01 heketi]# kubectl describe endpoints glusterfs-dynamic-ca949559-094a-11ea-8b3c-000c29fa7a79 -n heketi




提示:由上可知:PVC狀態為Bound,Capacity為1G。查看PV詳細信息,除容量,引用storageclass信息,狀態,回收策略等外,同時可知GlusterFS的Endpoint與path。EndpointsName為固定格式:glusterfs-dynamic-PV_NAME,且endpoints資源中指定了掛載存儲時的具體地址。

6.4 確認查看


通過5.3所創建的信息:

  • volume與brick已經創建;
  • 主掛載點(通信)在172.24.8.41節點,其餘兩個節點備選;
  • 三副本的情況下,所有節點都會創建brick。

  1 [root@k8smaster01 ~]# kubectl get pod -n heketi
  2 [root@k8smaster01 ~]# kubectl exec -ti glusterfs-b854k -n heketi -- lsblk	#glusterfs節點查看
  3 [root@k8smaster01 ~]# kubectl exec -ti glusterfs-b854k -n heketi -- df -hT	#glusterfs節點查看
  4 [root@k8smaster01 ~]# kubectl exec -ti glusterfs-b854k -n heketi -- gluster volume list
  5 [root@k8smaster01 ~]# kubectl exec -ti glusterfs-b854k -n heketi -- gluster volume info vol_29ba6f9665522ad5893412e61799a433				#glusterfs節點查看




6.5 Pod掛載測試

  1 [root@xxx ~]# yum -y install centos-release-gluster
  2 [root@xxx ~]# yum -y install glusterfs-fuse					#安裝glusterfs-fuse



提示:本環境master節點也允許分發pod,因此所有master也必須安裝glusterfs-fuse以便於正常掛載,同時版本需要和glusterfs節點一致。

  1 [root@k8smaster01 heketi]# vi gluster-heketi-pod.yaml
  2 kind: Pod
  3 apiVersion: v1
  4 metadata:
  5   name: gluster-heketi-pod
  6 spec:
  7   containers:
  8   - name: gluster-heketi-container
  9     image: busybox
 10     command:
 11     - sleep
 12     - "3600"
 13     volumeMounts:
 14     - name: gluster-heketi-volume			#必須和volumes中name一致
 15       mountPath: "/pv-data"
 16       readOnly: false
 17   volumes:
 18   - name: gluster-heketi-volume
 19     persistentVolumeClaim:
 20       claimName: gluster-heketi-pvc	  	 	#必須和5.3創建的PVC中的name一致
 21 [root@k8smaster01 heketi]# kubectl create -f gluster-heketi-pod.yaml -n heketi	#創建Pod


6.6 確認驗證

  1 [root@k8smaster01 ~]# kubectl get pod -n heketi | grep gluster-heketi
  2 gluster-heketi-pod        1/1     Running   0          4m58s
  3 [root@k8smaster01 ~]# kubectl exec -it gluster-heketi-pod /bin/sh -n heketi 	#進入Pod寫入測試文件
  4 / # cd /pv-data/
  5 /pv-data # echo "This is a file!" >> a.txt
  6 /pv-data # echo "This is b file!" >> b.txt
  7 /pv-data # ls
  8 a.txt  b.txt
  9 [root@k8smaster01 ~]# kubectl exec -it gluster-heketi-pod -n heketi -- df -h	#查看所掛載的glusterfs



  1 [root@k8smaster01 ~]# kubectl get pods -n heketi -o wide		#查看對應的glusterfs node



  1 [root@k8smaster01 ~]# kubectl exec -ti glusterfs-b854k -n heketi -- cat /var/lib/heketi/mounts/vg_2c7a02d1b1b7c1f165283b6691062102/brick_16e37a18a5e5fd40e14338ba78d99565/brick/a.txt
  2 This is a file!



提示:通過Pod寫入相應的測試文件,然後通過glusterfs node節點查看是否存在。

6.7 刪除資源

  1 [root@k8smaster01 ~]# cd heketi/
  2 [root@k8smaster01 heketi]# kubectl delete -f gluster-heketi-pod.yaml -n heketi
  3 [root@k8smaster01 heketi]# kubectl delete -f gluster-heketi-pvc.yaml
  4 [root@k8smaster01 heketi]# kubectl get pvc -n heketi
  5 [root@k8smaster01 heketi]# kubectl get pv -n heketi
  6 [root@k8smaster01 heketi]# kubectl exec -ti glusterfs-b854k -n heketi gluster volume list | grep gluster




參考:https://www.linuxba.com/archives/8152

https://www.cnblogs.com/blackmood/p/11389811.html本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

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

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

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

實現websocket 主動消息推送,用laravel+Swoole

近來有個需求:想實現一個可以主動觸發消息推送的功能,這個可以實現向模板消息那個,給予所有成員發送自定義消息,而不需要通過客戶端發送消息,服務端上message中監聽傳送的消息進行做相對於的業務邏輯。

主動消息推送實現
平常我們採用 swoole 來寫 WebSocket 服務可能最多的用到的是open,message,close這三個監聽狀態,但是萬萬沒有看下下面的onRequest回調的使用,沒錯,解決這次主動消息推送的就是需要用onRequest回調。
官方文檔:正因為swoole_websocket_server繼承自swoole_http_server,所以在 websocket 中有onRequest回調。

詳細實現:

 1 # 這裡是一個laravel中Commands
 2 # 運行php artisan swoole start 即可運行
 3 <?php
 4 
 5 namespace App\Console\Commands;
 6 
 7 use Illuminate\Console\Command;
 8 use swoole_websocket_server;
 9 
10 class Swoole extends Command
11 {
12     public $ws;
13     /**
14      * The name and signature of the console command.
15      *
16      * @var string
17      */
18     protected $signature = 'swoole {action}';
19 
20     /**
21      * The console command description.
22      *
23      * @var string
24      */
25     protected $description = 'Active Push Message';
26 
27     /**
28      * Create a new command instance.
29      *
30      * @return void
31      */
32     public function __construct()
33     {
34         parent::__construct();
35     }
36 
37     /**
38      * Execute the console command.
39      *
40      * @return mixed
41      */
42     public function handle()
43     {
44         $arg = $this->argument('action');
45         switch ($arg) {
46             case 'start':
47                 $this->info('swoole server started');
48                 $this->start();
49                 break;
50             case 'stop':
51                 $this->info('swoole server stoped');
52                 break;
53             case 'restart':
54                 $this->info('swoole server restarted');
55                 break;
56         }
57     }
58 
59     /**
60      * 啟動Swoole
61      */
62     private function start()
63     {
64         $this->ws = new swoole_websocket_server("0.0.0.0", 9502);
65         //監聽WebSocket連接打開事件
66         $this->ws->on('open', function ($ws, $request) {
67         });
68         //監聽WebSocket消息事件
69         $this->ws->on('message', function ($ws, $frame) {
70             $this->info("client is SendMessage\n");
71         });
72         //監聽WebSocket主動推送消息事件
73         $this->ws->on('request', function ($request, $response) {
74             $scene = $request->post['scene'];       // 獲取值
75             $this->info("client is PushMessage\n".$scene);
76         });
77         //監聽WebSocket連接關閉事件
78         $this->ws->on('close', function ($ws, $fd) {
79             $this->info("client is close\n");
80         });
81         $this->ws->start();
82     }
83 }

 

前面說的是 swoole 中onRequest的實現,下面實現下在控制器中主動觸發onRequest回調。實現方法就是我們熟悉的curl請求。

 1 # 調用activepush方法以後,會在cmd中打印出 
 2 # client is PushMessage 主動推送消息 字眼
 3     /**
 4      * CURL請求
 5      * @param $data
 6      */
 7     public function curl($data)
 8     {
 9         $curl = curl_init();
10         curl_setopt($curl, CURLOPT_URL, "http://127.0.0.1:9502");
11         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
12         curl_setopt($curl, CURLOPT_HEADER, 1);
13         curl_setopt($curl, CURLOPT_POST, 1);
14         curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
15         curl_exec($curl);
16         curl_close($curl);
17     }
18     
19     /**
20      * 主動觸發
21      */
22     public function activepush()
23     {
24         $param['scene'] = '主動推送消息';
25         $this->curl($param);            // 主動推送消息

 

用途
onRequest 回調特別適用於需要在控制器中調用的推送消息,比如模板消息之類,在控制器中調用。

 

推薦閱讀:

 

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

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

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

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

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

敏捷開發:項目管理的一些思考

誤區

之前我沒有項目經驗,在上一家公司的項目管理上,我只是照葫蘆畫瓢。

  1. 產品發起,整個項目沒有項目經理這一說。或者說有,但卻真的感受不到,一丁點也感受不到。

  2. 產品發起會議,或者開發發起會議。無論誰來發起會議,一般都會針對於某一具體需求或者某一具體實現方式。

  3. 沒有具體的任務規劃,任務拆得不夠細緻。這個和開發自身有關係。當然那時的公司確實沒有一些指導性質的模板和導師。

  4. 任務分得不夠細緻,就會導致工期評估差距比較大。

  5. 各種O們的臨時緊急需求,很多O沒有技術背景和項目管理背景。很多時候提出的需求都是發生在項目開始過程中。

    都是很急的需求,不得不重新估算時間和排期。開發為了避免延期風險,就是讓產品排優先級,然後我們根據優先級估時。

    直到有必要的需求都在這個迭代中計劃上。

  6. 沒人全局把控,產品從產品角度,開發從開發角度,業務從業務角度。始終沒有一個最終的協調人。

    產品在對各種O的對話中,氣場和身份不足,導致需求基本是提出就會安排。即便是請出青島總負責人出面溝通,最終的結果一般就是接受。

  7. 之前我們是青島為開發,北京為產品、UI、前端、測試。異地溝通。電話會議是常有的事情,私下的臨時溝通電話更是家常便飯。

    信息同步、開會、理解程度 都會造成溝通上的成本增加。

  8. 緊急需求上線后,三個月沒人反饋。問了才知道,財務提的需求他們沒用過。

  9. 開會一般都會臨時決定,發起人會準備資料,但是其他人提前看資料準備問題的情況極少。導致會議冗長效率低。

解決

現在來看,無論如何,我們在知道這些問題,但是為什麼不去處理呢?應該還是習慣了,即便是整個項目非常掙扎,依然是按老規矩走。大家都是困在了這個圍牆中。

我現在也有了一年的項目管理經驗,初入門道。只是對自己的過往進行一下分析解決。

以上的誤區和問題,我覺得需要一個有經驗並且有點能力的人來帶領這個項目團隊。

1. 確認項目經理

但是按照我上家公司的情況,一般會立經驗豐富的主管直接管理這個項目。

當時的情況是,項目主管在項目上的精力完全不夠,甚至說項目管理在項目主管心中的優先級比較低。

根本原因,青島作為研發中心,技術基因強大。很多技術管理人員,沒有意識到項目管理的重要性。

組織架構主要是垂直單線架構,技術-主管-經理-總監-CTO。無非是自己下面的人多,按照業務或者大項目分了組而已。

如果讓開發作為項目經理,

首先這個開發是否願意承擔項目經理職責?

是否真的能夠賦給項目經理一些實權?

是否有鼓勵機制,比如晉陞優先或者獎金等?

建議:

加強項目管理意識;

加強項目管理能力;

必要的話可以作為量化指標來看;

加入一些激勵機制;

2. 培養主動性

因為技術基因影響。主管或者經理出於“好心”考慮。

他可能會考慮到,如果把項目管理中的某些事情分配給組員,會不會引起反感?會不會影響在組員中的美好形象?

也算是確實分下來一些,比如項目規劃和估時以及排期。但是我沒經驗的,是不是可以稍微引導一下?

領導總想為老好人,但是這樣自己手頭的任務分不下去。

下面的人也得不到成長。

建議

對組員有一定的規劃和成長要求,而不是放任其隨意生長(有一定風險)

領導應該提高自身的管理能力,管理技巧。而不是憑經驗論。

定時關切Review分下去的任務,從結果或者過程提出建議和優化。

3. 確認好需求邊界

產品經理和負責人,確認好需求邊界。飄忽不定的需求給項目的打擊是很大的。

開發在搖搖墜墜中估時,此時的估時肯定會有大量的冗餘,因為之前需求的變動,上線時間一改再改。

在加上,主管、經理偶爾砍幾刀。所以開發在估工時都會冗餘很多。為了被砍,為了需求不定。

建議:

確認好需求,可將項目周期縮短,小版本迭代。

強化項目上線時間約定,鍥約精神。不僅僅是開發要遵守。其他人員最好也能嚴格遵守。(當初這個做起來真的比較困難)

信心是做出來的,幾次項目的延期和需求的變更會嚴重打擊大家的信心和士氣。所以按時上線很重要。

規劃得有,但是是不是可以考刪掉遠在4個月以後的需求。

4. 緊急需求

比如財務的一些緊急需求,其實確實緊急,但是使用頻率很低。

是不是可以有另一種解決方案?不一定非要按照財務提出的那種設想。

我們達到並滿足了他們的目標,後期再去做頁面更加直觀。

比如要一個訂單查看頁面。那我使用程序定時拉取新訂單推送到企業微信或者釘釘。結果也是非常滿意的。

不一定非要做一個頁面,很多時候做成一個頁面,大家會發揮自己的產品意識,增加一些不必要的按鈕、功能和邏輯。

建議

深入了解需求,而不僅僅是一句話,也不是根據用戶提出的需求來做,用戶到底想要什麼?--他就想要有訂單能及時知道。

緊急需求是否真緊急,也得看使用頻率。使用頻率低,是否有其他方式實現。

能擱置的暫且擱置一下,之前就我一個人開發,很多原本緊急的需求因為開發不夠,擱置了也就擱置了。然後甚至有的都自己消失了。

5. 高效開會

會議開始前,大家幾乎么有預習的習慣,會上很多時候沒有主持人,大家就問題會討論很深,導致時間不可控。

有的會能一個電話解決的就沒必要拉這個拉那個來開會。這種儀式感不重要,開會也不是拉家常。

為了讓領導知道這次會議的重要性,這個項目的重要性。拉着領導一起開:

但是領導的事情多,很多時候在會上他們是一直回複信息,其實當時是比較尷尬的,領導不能專心處理問題。我們看着領導沒用心聽,不了解的同事還以為領導漠不關心呢。

建議:

發起人拉群,提前@人提醒大家關注和看會議內容。

發起人做會議:主題、流程、最終結論

確認會議主持人,隨時控制會議進度。有些細節會後溝通。

領導可以不必參加需求討論會,把會上討論的疑難問題,會後單獨和領導會報,再拉一個小會議電話溝通確認即可。

 重要項目啟動會、項目上線等會議盡量簡短,領導全身心參加。保證大家的鬥志,統一思想達成一致。有些形式必須要有的。

6. 相關方

開發與客戶溝通少,因為兩地溝通,基本是產品作為翻譯官將業務轉成需求轉達給開發。

開發沒有感知用戶的存在。

建議

多聽聽用戶怎麼說。

大家達成一致,每月電話會議或者視頻會議溝通一次。會議可以控制在1小時以內,氛圍可以輕鬆,主要是收集需求以及反饋問題。

如果有多個業務部門都是相關方,那麼主要思想就是設置定期溝通(規律的定期溝通)
    

7. 轉變

優勝劣汰的企業付薪給我們,我們就要服務於這個企業用戶。甚至說服務好用戶。

我們開發也要主動從自身求變。好好說話,真心替我們的用戶思考過問題。

從產品和業務角度認可業務優先級,而不是緊緊盯着開發重構、新技術的應用。

建議

轉變意識:我想為你們服務;

我能力不行,但是我能主動學習項目管理知識和經驗,並在項目中實踐,反思,再實踐。

我要為我開發的產品負責,它的迭代,扔給它的需求,和它相關方,它的應變能力。

主動一點,也許事情看起來並沒有那麼難。

現在的我,我們

新的公司,給了我很多的機會,糾正了我很多認知,我也從實踐中反思了很多,收穫了很多。

公司的組織架構是矩形架構:橫向職能,垂直項目

項目首先會有項目經理,項目經理有一定的項目經理獎金。當然項目經理要履行項目經理的職責。都會有績效。

項目經理,開發,產品,測試,DBA,運維,PMO 這些會組成一個項目組。

整個項目組會在項目經理的引導下,開發項目直到上線。然後迭代下一版本。

現在項目中,有使用瀑布開發,有使用敏捷開發。

我所認知的一點是,各個職能團隊人員雖然屬於職能。但是基本會長期泡在各個項目中。

項目中學習到的東西,在項目中的成長也是很重要的。所以項目經理有一定的敏捷角色中PM的角色:引導大家,賦能給大家。

我們正在嘗試的敏捷(嘗試)

其他團隊物理面板:

我們團隊的面板:非常簡單

項目并行和項目特殊性,我們採用周交付,不確定哪一天交付什麼(特殊需求除外)。

因為項目為運維性質的項目,有開發,緊急需求,客戶答疑問題較多。時間不太可控。

並且大家积極性都很高,沒必要要求必須排滿周開發任務。

自己開發完直接到需求池,領取最優先級的需求,或者幫助其他組員分解開發任務。

業務需求 + 技術需求 雙向需求驅動,佔比5:1。

周最高優先級佔比 1:4

這樣大家不會因為具體時間的衝突導致交付的壓力。周交付的任務為必須交付的最小單元(本周必須交付)。

沒必要的會議去掉,我們基本都坐在一起,不去會議室。工位周邊就可以開會。電腦操作隨時記錄,會後發出來。

周五:計劃會(15:00 ~ 15:30)

10分鐘,材料都是平時積累,會前整理完

地點:工位

目的:回顧上版本迭代精進結果。分析過程問題原因,總結問題。認知好與不足,下版本迭代重點要解決的問題。;討論新需求優先級;達成一致周最小目標。

周五會後 + 周一開會前 

這段時間,是大家緩一緩,總結自己規劃下周的時間。

磨刀不誤砍柴工,想好怎麼做,才能預知困難和風險。

對新需求進行任務拆分,需求理解,任務具體估時。

周一:迭代會(10:00 ~ 10:15)

15~30分鐘,微調任務;統一思想;確認周迭代目標;

地點:工位

周三:如果需要可以開一個簡短溝通會

我們自己維護的計劃和交付,簡單高效。團隊協作,互相可看。

我們的產品是剛畢業的新人,我們互相指導學習。

他最近也在研究用戶故事如何寫好。他打算下周先打印出來,大家看看自己感受一下。

最近我看完了一本敏捷開發相關的書籍,同時推薦給了他。我們想單獨摘出好的或者值得討論的地方,大家圍在一起拿出半小時討論一下也未嘗不可。

還有一本我正在看,可能我實踐經驗不足。總是感覺一般般的感覺。思路不是很清晰。

有讀過的朋友可以發表一下看法。

總結

敏捷我們在路上。不為敏捷而敏捷。

我們互相提高,互相幫助,能力提升,升職加薪。生活質量更好。

大街上敏捷一大堆,根據實際情況摸索敏捷之道。發揮大家的能力,提升大家的能力。為大家帶來點實際的東西。為企業帶來點實際的東西。

項目管理根本目標是把項目管好,項目管好,大家更加自信,互相也都信任。所以項目管好是項目組良性循環的根本。項目經理要多花大力氣去關注,去學習。

謝謝關注公眾號

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

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

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

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

Gogoro 與小牛歐洲廝殺,搶佔德國灘頭堡

德國因為天氣較冷,摩托車被視為是夏天的玩具,但現在卻成為Gogoro 與中國牛電科技等亞洲電動機車品牌進軍歐洲市場的敲門磚。

現在電動機車可以透過應用程式連結到智慧手機,進行簡易的充電、里程控制以及反偷竊與帳單功能等等。日經新聞報導,Gogoro 去年8 月開始在德國柏林透過電動機車分享計畫Coup 來布局市場,起初提供200 台,近期會再增加800 台,而中國的牛電科技則在全德國、奧利地、比利時與瑞士市場開始銷售,尚未公布銷售數字。

這兩家競爭者都與德國汽車零件供應商Bosch 合作,Coup 是Bosch 的子公司,而牛電科技電動機車則使用Bosch 的引擎。Bosch 也積極與電動車廠合作,作為從內燃機引擎轉向電動車引擎世代的契機,因為電動機車只需要數十個零件,而傳統機車需要上千個零件,德國許多汽車零件供應商都預告裁員。Coup 則是Bosch 成立來形塑城市移動趨勢的前哨戰,以提供用戶服務為核心。

報導指出,Gogoro 的電池充電概念讓Coup 印象深刻。Gogoro 自2015 年以來一直在台灣城市營運自己的電子移動計畫,但客戶必須購買相當於6 萬元新台幣的電動機車,然後在交換站網路交換電池,每月付款新台幣300~900 元。Gogoro 在柏林則提供全天出租20 歐元,或3 歐元30 分鐘,而不需要購買一台電動機車。

Coup 智慧手機應用程式可顯示客戶在哪裡可以找到可用的電動機車、解鎖和鎖定,並進行計費。在使用過程中,應用程式會顯示電動機車的位置,並通知電池狀態和剩餘里程。總距離約95 公里,最高時速45 公里,21 歲以上的人可以使用德國駕駛執照租用。

Gogoro 表示,選擇柏林而不是冬天仍溫暖怡人的羅馬與馬德里,是因為這裡能引領潮流,而且柏林人民擁抱新事物。1980 年柏林以自己的共享資本為傲,引進Airbnb 的前身Mitwohnzentralen,並在2014 年推出一個電動鑽機租借商店。這座城市擁有十幾個汽車共享計畫。分析師認為選擇德國也是利用德國公司高品質的聲譽來進軍其他歐洲市場。

中國牛電科技推出的電動機車售價2,700 歐元,也使用與Coup 類似的應用程式,趁Gogoro 專注布局柏林時快速佔領其他市場。在德國城鎮Fulda,三菱與鈴木汽車的經銷商自3 月來開始銷售小牛電動機車。

Coup 即將進軍巴黎,提供首批600 台Gogoro,讓Gogoro 在歐洲銷售量達到1,600 台,另外在台灣銷售2 萬台。牛電科技預計到2018 年全球賣出15 萬台。截至2016 年9 月,中國已經賣出10 萬台。

(合作媒體:。圖片出處:Gogoro)

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

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

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

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

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

荷蘭團隊要打造世界第一台以甲酸為燃料巴士

隨著環保意識提升,再生能源的利用逐漸受到各國重視,荷蘭一群學生就開發出一種儲存能源的方法,不僅簡單製造、可用性高也更持久,他們打算利用這項技術來打造第一台使用甲酸(Formic acid)做為燃料的巴士。  
用甲酸做燃料的巴士   甲酸,又被稱做蟻酸,是螞蟻及蚊蟲在叮咬中傳播的物質,化學式為HCOOH,這種簡單的羧酸已經被使用在紡織和皮革加工作業中,也可以用來做為家畜飼料的防腐劑,或是添加在家用的水垢去除劑。

 

(Source:Flickr/Brian Gratwicke CC BY 2.0)   而由荷蘭恩荷芬理工大學(TU/e)多學科學生團隊組成的新創公司Team FAST  找到了一種方法,讓甲酸能夠有效攜帶氫燃料電池必需的成分,為電動車提供電力。   BBC 報導,Team FAST 計畫打造的巴士主要燃料叫做Hydrozine(並不是聯氨Hydrazine),由99% 的甲酸組成,呈現液體型態,能夠輕易的傳送運輸,因此在車輛上也能夠快速的進行「加油」,就像是目前一般使用的燃料一樣。   但和現今的燃料不同的是,Hydrozine 更環保。   Team FAST 的發言人Lucas van Cappellen 表示,使用這種燃料,車輛排放的尾氣中只會有二氧化碳和水,不會具有其他有害氣體,像是一氧化氮、煤煙或硫氧化物。   為了證明這個概念可行,Team FAST 目前正和VDL 集團合作,打造第一台甲酸燃料巴士,預計2017 下半年間將在荷蘭登場,除了在展覽中亮相以外,巴士也會在一般道路上行駛。   這台巴士將透過VDL 開發的電力系統驅動,並且能夠透過托掛在後方拖車上的甲酸燃料電池系統接收額外的電力。   根據van Cappellen 透露,目前的燃料箱大約是300 公升,因此這台電動巴士的續航力大約是200 公里,但未來要再把燃料箱加大也是非常簡單的。   但為什麼要一開始就從巴士下手,而不是選擇一般車輛呢?   van Cappellen 解釋,因為團隊覺得電動車已經是一個很好的解決方案,如果選擇從一般車輛入手,Hydrozine 將會面對和電動車競爭的問題。   「但相反來看,如果我們能夠建造一台滿足巴士公司需求的巴士,續航力達到400 公里左右,也能夠快速補充燃料,我們就能在還沒有競爭對手的領域中,展現出Hydrozine 的潛力。」  
商業化的可行性   根據Team FAST 官網和van Cappellen 的說明,團隊先是將溶於水的氫氣和二氧化碳運用催化劑合併為甲酸製成Hydrozine,之後再透過催化劑在「reformer」的裝置中分解為氫氣和二氧化碳,將氫氣加到燃料電池中與氧氣反應,產生電力供巴士使用。  

(Source:Team FAST)   Team FAST 目前正在為「reformer」申請專利中,新設計的「reformer」體積只有過去的十分之一,這可能也是Hydrozine 首次能夠被運用在交通運輸上的原因。   負責交通解決方案的VDL ETS 總經理Menno Kleingeld 表示,VDL 一直在尋找新技術,能夠透過簡單方式拓展零排放交通的範圍,「將甲酸分解為氫氣就是一項很有希望的新技術」。   van Cappellen 估計,將一般加油站轉換為Hydrozine 補充站的整體費用大概是3.5 萬歐元(約120 萬元台幣),比起直接架設會便宜許多,而且Hydrozine 比汽油更加便宜,預計未來價格還會持續下降,因此他認為商業化是可行的。   除此之外,Team FAST 認為,雖然這樣的巴士也會排放二氧化碳,但製造Hydrozine 的原料之一就是二氧化碳,是由現有的來源收集而來,因此並沒有額外的碳產生,因此能夠達到環保概念中所謂的「碳循環」效果。   荷蘭一些專家和企業都看好並支持這個計畫,研究的學生也都非常投入在其中,除了15 位全心投入計畫的人員外,其他學生每周也都投入20~25 小時在計畫中研究。   van Cappellen 表示,儘管他們不能從中獲得學分,但能從大學中獲得的實際經驗大概就只有那麼一些,「我們正在建造自己的未來」。   (合作媒體:。首途來源:pixabay;圖片出處:TechNews)  

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

【其他文章推薦】

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

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

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

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