元宇宙(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访问不需要域名服务,但是上线后一定要搞个域名绑定,可以从阿里云查询想要的域名是否还可用:https://wanwang.aliyun.com/domain/searchresult/#/?keyword=vector&suffix=com。 除了 .com 的域名外,其他域名相对都不贵,买到域名后需要备案,从购买域名到完成备案大概需要3周时间,所以购买域名一定要趁早。元宇宙(metaverse)相关的好的域名其实早就被注册

数据库
最简单的方式就是在ECS上部署一个MySQL,但是考虑稳定性还是购买了云数据库RDS版(MYSQL)https://rdsnext.console.aliyun.com/,它提供了操作数据的页面以及已经各种工具,最主要是它包含了数据备份的能力,不用担心数据丢失的问题。毕竟机器挂了可以切换,但是数据丢失了就回到起点, 而且自带的mysql监控告警和各种诊断工具,可以腾出更多时间专注于业务开发。

项目
开源社区项目git上一搜一大堆,最多的可能还是PHP为主的,JAVA也不少, 考虑到平时都是写java为主,看了不少开源项目,其中不乏上千star的项目,发现有完整功能并能修改配置后一键部署的还真少,大部分项目还是有不少功能缺失,当然作为资深码农也没指望拿来就用,找了一个覆盖最基本功能的就可以了,后端技术栈上选择了 SpringBoot + FreeMaker(前端页面)。
短信
用户发帖子必须是登录状态,项目中可以用邮箱或者短信登录,那短信服务就选择阿里云(https://dysms.console.aliyun.com/quickstart)的吧,主要当验证码用,目前国内一条短信0.045元,当然也有包月套餐。配置过程如下

申请签名:主要说明下要用的短信服务的使用场景,因此网站必须成功备案后才能走这个流程,申请后阿里云内部审核,一般半天能有结果。
申请模板:主要配置下短信的模板信息,阿里云上已经提供了不少模板样例,直接使用样例即可,申请后阿里云内部审核,一般半天能有结果。
系统设置:主要配置短信服务的各种发送配置,一般可以忽略。
发送短信:可以再阿里云上选择模板和手机号测试下,通过代码发送短信可以直接参考内部SDK。
邮箱
邮箱服务主要为通知类事件或者找回密码等场景用, 为了和私人邮箱分离开,还是开通了阿里云的企业邮箱https://alimail.console.aliyun.com/,邮箱后缀可以是网站域名。开通企业邮箱一定确保域名解析生效。

技术架构
直接上图吧

后续规划
- 数据检索迁移到独立的Elasticsearch,目前帖子的增加,删除,修改直接影响索引,模块之间强耦合,未来通过监听mysql binlog的方式实现索引的增量更新。
- 在用户和帖子的服务层面有redis缓存,和搜索功能类似,未来将redis迁移到独立的ECS。
- 监控指标只有曝光PV,搜索PV,帖子PV等,各种业务指标还需要完善,待接入阿里云的CMS。
- 缺乏点击率 和 用户纬度的特征,导致目前精排能力有限,帖子搜索和推荐的并没有实现精排的能力。
- 资金有限,资源有限,访问量也有限,期待志同道合的人一起打造一个元宇宙社区。
欢迎访问元宇宙中文社区,在这里大家可以提问,回答,分享,诉说,一起构建一个元宇宙社区。
元宇宙(metaverse)中文社区-工程实践的更多相关文章
- 乘风破浪,遇见未来元宇宙(Metaverse)之进入元宇宙世界,虚拟数字人行业洞察报告
正值元宇宙热潮,虚拟数字人兴起 作为⼀个新兴领域,虚拟数字⼈已经引起市场和资本的⾼度关注,截⾄目前据不完全统计,全球范围已有500+虚拟数字人相关项目获得融资,融资总额超10亿美元,并且融资项目和总额 ...
- Three.js实现脸书元宇宙3D动态Logo
背景 Facebook 近期将其母公司改名为 Meta,宣布正式开始进军 元宇宙 领域.本文主要讲述通过 Three.js + Blender 技术栈,实现 Meta 公司炫酷的 3D 动态 Logo ...
- 构建“元宇宙”,有哪些3D建模方式?
"沉浸.3D世界.虚拟社交.虚拟购物",最近"元宇宙"的概念特别火.人们畅想通过AR/VR以及其他互联网技术,把现实世界的楼房街道.天气温度.人际关系等投射到虚 ...
- Awesome metaverse projects (元宇宙精选资源汇总)
Awesome Metaverse 关于 Metaverse 的精彩项目和信息资源列表. 由于关于 Metaverse 是什么存在许多相互竞争的想法,请随时以拉取请求.问题和评论的形式留下反馈. We ...
- GIS :元宇宙未来发展的有力技术支撑
摘要:元宇宙是描述未来互联网迭代发展的一个概念,是一个将现实世界和虚拟世界相互融合的一个可感知的持久.共享的3D虚拟空间组成的世界. 本文分享自华为云社区<[云驻共创]元宇宙漫游指南-新一代GI ...
- VS Code 中文社区正式成立啦!VS Code Day 圆满落幕!
背景简介 Visual Studio Code 是一款现代化轻量级代码编辑器,它免费.开源.跨平台.功能强大.本次 VS Code Day 是广大 VS Code 爱好者一起学习与交流的盛会,让我们对 ...
- 从产业链、架构和技术三个层面,看元宇宙与RPA的发展关系
你可能还不知道,元宇宙也将带动RPA高速发展 一文读懂RPA如何赋能元宇宙,虚拟空间更需要RPA无处不在 三个层面,解读元宇宙如何利好RPA行业发展 从产业链.架构和技术三个层面,看元宇宙与RPA的发 ...
- 另一个角度看元宇宙与RPA:人工世界、平行员工与RPA
另一个角度看元宇宙与RPA:人工世界.平行员工与RPA 从元宇宙到平行员工,人工世界推动的虚实分工利好RPA 机器人是铁打营盘人类是流水兵,未来元宇宙的虚实分工RPA机会巨大 文/王吉伟 元宇宙是平行 ...
- go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE
go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE Go语言是谷歌2009发布的专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速 ...
随机推荐
- 【Reverse】每日必逆0x03
BUU-刮开有奖 附件:https://files.buuoj.cn/files/abe6e2152471e1e1cbd9e5c0cae95d29/8f80610b-8701-4c7f-ad60-63 ...
- 【♪♪♪】网易云音乐mp3真实地址
参考别人的博客,得到下面的地址,填上ID号即可,后缀的[.mp3]不用输入 http://music.163.com/song/media/outer/url?id= 例如 最终,合并地址为 http ...
- 【J-Link】J-Link不支持(版本太低)
事情起因,我原本可以烧录和仿真的(版本6.3.4),但是后来安装另一个东西,这个东西里面包含旧的J-Link驱动(版本5.1.2) 它把Keil文件夹下的JLinkARM.dll覆盖了,导致出现下面的 ...
- Running shell commands by C++
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; st ...
- Linux学习 - 输入输出重定向,管道符,通配符
一.键盘输入读取read read [选项] [变量名] -p [显示信息] 在等待read输入时,输出提示信息 -t [秒数] 指定read输入等待时间 -n [字符数] 指定read只接收n个字符 ...
- GO 时间处理
比较大小 比较大小 先把当前时间格式化成相同格式的字符串,然后使用time的Before, After, Equal 方法即可. time1 := "2015-03-20 08:50:29& ...
- Linux基础命令---htdigest建立和更新apache服务器摘要
htdigest htdigest指令用来建立和更新apache服务器用于摘要认证的存放用户认证信息的文件. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS. 1.语法 ...
- error信息
/opt/hadoop/src/contrib/eclipse-plugin/build.xml:61: warning: 'includeantruntime' was not set, defau ...
- Docker常用image
MySQL Start a mysql server instance Starting a MySQL instance is simple: docker run -itd --name mysq ...
- 【C/C++】散列/算法笔记4.2
先说一下我自己的理解. 我先给你N组数据,这个N组里可能有重复的! 然后我们先统计好了N组里面的独立的每个对应的出现了几次(相当于map,然后每项属性有出现了多少次的),用的是数组下标对应 现在我们给 ...