元宇宙(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++代码的速 ...
随机推荐
- 利用python代码获取文件特定的内容,并保存为文档
说明:有段时间需要读取上百个文件的单点能(sp),就写了下面的代码(计算化学狗努力转行中^-^) import os.path import re # 1 遍历指定目录,显示目录下的所有文件名 def ...
- nodeJs-process对象
JavaScript 标准参考教程(alpha) 草稿二:Node.js process对象 GitHub TOP process对象 来自<JavaScript 标准参考教程(alpha)&g ...
- 对于Linq关键字和await,async异步关键字的扩展使用
最近在看neuecc大佬写的一些库:https://neuecc.medium.com/,其中对await,async以及linq一些关键字实现了自定义化使用, 使其不需要引用对应命名空间,不需要多线 ...
- 面试一定会问到的-js事件循环
这篇文章讲讲浏览器的事件循环(nodejs中的事件循环稍有不同),事件循环是js的核心之一,因为js是单线程,所以异步事件实现就是依赖于事件循环机制,理解事件循环可让我们更清晰的处理js异步事件和应对 ...
- 【leetcode】122.Best Time to Buy and Sell Stock II(股票问题)
You are given an integer array prices where prices[i] is the price of a given stock on the ith day. ...
- 节省内存的循环banner(一)
循环banner是指scrollview首尾相连,循环播放的效果,使用非常广泛.例如淘宝的广告栏等. 如果是简单的做法可以把所有要显示的图片全部放进一个数组里,创建相同个数的图片视图来显示图片.这样的 ...
- iOS调用系统电话、浏览器、地图、邮件等
- (IBAction)openMaps { //打开地图 NSString*addressText = @"beijing"; //@"1Infinite Loop, ...
- Java 使用slf4j记录日志
引入依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12< ...
- ActiveMQ(二)——ActiveMQ的安装和基本使用
一:安装 2.启动之后成功 二.创建实例测试ActiveMQ 配置Maven所需的依赖 <dependency> <groupId>org.apache.activemq< ...
- Redis | 第12章 Sentinel 哨兵模式《Redis设计与实现》
目录 前言 1. 启动并初始化 Sentinel 2. Sentinel 与服务器间的默认通信 2.1 获取主服务器信息 2.2 获取从服务器信息 2.3 向主服务器和从服务器发送信息 3. 接受来自 ...