元宇宙(metaverse)中文社區-工程實踐
歡迎訪問元宇宙中文社區,在這裡大家可以提問,回答,分享,訴說,一起構建一個元宇宙社區。
2021年「元宇宙」的這個詞的火熱程度在業內絕對不亞於疫情,趁著這個熱度,本文記錄了如何搭建一個社區網站的實踐過程。
目標
一個社區網站主要專註於用戶之間通過帖子進行互動,從用戶角度看基本的功能包含發帖、回復、點贊、評論以及用戶註冊登錄等功能,從管理員角度看必須有帖子、用戶、許可權以及各種後台管理能力。
技術選型
現在利用雲計算的能力,個人或者小型企業都能快速的搭建網站,筆者也曾經用過多個公司的雲計算產品,發現阿里雲的產品用的最爽。搭建小型網站可選的有雲虛擬主機,輕量應用伺服器和雲伺服器ECS。雲虛擬主機預裝建站環境,用戶不用自己維護伺服器,自由度低,適用於新手入門。雲伺服器ECS技術門檻要求高一些,用戶自由搭建環境,有系統最高許可權,可彈性擴容。輕量應用伺服器屬於ECS伺服器不過為了新手增加了不少輔助功能。最終選擇ECS,原因可以參考之前的文章如何用阿里雲ECS搭建網站。
主機
其實選擇ECS最大的原因還是它比在雲虛擬伺服器上開發更有空間,而且也不貴,單核1G按月收費的ECS伺服器,一年也不會超過1000RMB。在ECS上可以部署任何軟體,對於一個網站而言,麻雀雖小但五臟俱全。未來也許網站訪問量變大後,許多服務都需要獨立出去,比如分散式快取或者搜索的能力,在ECS上可以獨立部署一個Redis或者Elasticsearch,數據的寫入和檢索都在一台ECS上完成,當單機能力不足以抗住流量時,可以將快取或者搜索能力遷移到其他ECS或者直接購買此類服務,而遷移改動的成本僅僅是訪問鏈接的切換。但如果用雲虛擬伺服器意味著要麼直接集成Lucene到業務程式碼內,要麼一開始就訪問外部服務。
申請實例後就能看到實例詳情,初始的ECS上幾乎啥都沒有隻有yum工具,通過yum把最基本的軟體安裝上去:
安裝JDK,GIT,MAVEN
yum install java-1.8.0-openjdk-devel.x86_64
yum -y install apache-maven
yum install -y git
按照git和maven可以在ECS上拉取最新的程式碼並編譯。mvn clean package 生成最新jar後,關閉之前的java進程並啟動最新java進程
kill -9 $(ps -aux |grep xxx.jar |grep -v grep |awk '{print $2}')
nohup java -jar target/xxx.jar --spring.profiles.active=prod > logs/application.log 2>&1 &
域名
開發過程中可以通過IP訪問不需要域名服務,但是上線後一定要搞個域名綁定,可以從阿里雲查詢想要的域名是否還可用://wanwang.aliyun.com/domain/searchresult/#/?keyword=vector&suffix=com。 除了 .com 的域名外,其他域名相對都不貴,買到域名後需要備案,從購買域名到完成備案大概需要3周時間,所以購買域名一定要趁早。元宇宙(metaverse)相關的好的域名其實早就被註冊
資料庫
最簡單的方式就是在ECS上部署一個MySQL,但是考慮穩定性還是購買了雲資料庫RDS版(MYSQL)//rdsnext.console.aliyun.com/,它提供了操作數據的頁面以及已經各種工具,最主要是它包含了數據備份的能力,不用擔心數據丟失的問題。畢竟機器掛了可以切換,但是數據丟失了就回到起點, 而且自帶的mysql監控告警和各種診斷工具,可以騰出更多時間專註於業務開發。
項目
開源社區項目git上一搜一大堆,最多的可能還是PHP為主的,JAVA也不少, 考慮到平時都是寫java為主,看了不少開源項目,其中不乏上千star的項目,發現有完整功能並能修改配置後一鍵部署的還真少,大部分項目還是有不少功能缺失,當然作為資深碼農也沒指望拿來就用,找了一個覆蓋最基本功能的就可以了,後端技術棧上選擇了 SpringBoot + FreeMaker(前端頁面)。
簡訊
用戶發帖子必須是登錄狀態,項目中可以用郵箱或者簡訊登錄,那簡訊服務就選擇阿里雲(//dysms.console.aliyun.com/quickstart)的吧,主要當驗證碼用,目前中國一條簡訊0.045元,當然也有包月套餐。配置過程如下
申請簽名:主要說明下要用的簡訊服務的使用場景,因此網站必須成功備案後才能走這個流程,申請後阿里雲內部審核,一般半天能有結果。
申請模板:主要配置下簡訊的模板資訊,阿里雲上已經提供了不少模板樣例,直接使用樣例即可,申請後阿里雲內部審核,一般半天能有結果。
系統設置:主要配置簡訊服務的各種發送配置,一般可以忽略。
發送簡訊:可以再阿里雲上選擇模板和手機號測試下,通過程式碼發送簡訊可以直接參考內部SDK。
郵箱
郵箱服務主要為通知類事件或者找回密碼等場景用, 為了和私人郵箱分離開,還是開通了阿里雲的企業郵箱//alimail.console.aliyun.com/,郵箱後綴可以是網站域名。開通企業郵箱一定確保域名解析生效。
技術架構
直接上圖吧
後續規劃
- 數據檢索遷移到獨立的Elasticsearch,目前帖子的增加,刪除,修改直接影響索引,模組之間強耦合,未來通過監聽mysql binlog的方式實現索引的增量更新。
- 在用戶和帖子的服務層面有redis快取,和搜索功能類似,未來將redis遷移到獨立的ECS。
- 監控指標只有曝光PV,搜索PV,帖子PV等,各種業務指標還需要完善,待接入阿里雲的CMS。
- 缺乏點擊率 和 用戶緯度的特徵,導致目前精排能力有限,帖子搜索和推薦的並沒有實現精排的能力。
- 資金有限,資源有限,訪問量也有限,期待志同道合的人一起打造一個元宇宙社區。
歡迎訪問元宇宙中文社區,在這裡大家可以提問,回答,分享,訴說,一起構建一個元宇宙社區。