元宇宙(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。
- 缺乏点击率 和 用户纬度的特征,导致目前精排能力有限,帖子搜索和推荐的并没有实现精排的能力。
- 资金有限,资源有限,访问量也有限,期待志同道合的人一起打造一个元宇宙社区。
欢迎访问元宇宙中文社区,在这里大家可以提问,回答,分享,诉说,一起构建一个元宇宙社区。