元宇宙(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++代码的速 ...
随机推荐
- js正则表达式之密码强度验证
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 什么是 IP 地址 – 定义和解释
IP 地址定义 IP 地址是一个唯一地址,用于标识互联网或本地网络上的设备.IP 代表"互联网协议",它是控制通过互联网或本地网络发送的数据格式的一组规则. 本质上,IP 地址是允 ...
- Oracle—网络配置文件
Oracle网络配置文件详解 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下. 1 ...
- 解决ViewPager与ScrollView 冲突
ViewPager来实现左右滑动切换tab,如果tab的某一项中嵌入了水平可滑动的View就会让你有些不爽,比如想滑动tab项中的可水平滑动的控件,却导致tab切换. 因为Android事件机制是从父 ...
- Linux基础命令---elinks文本浏览器
elinks elinks指令是一个纯文本格式的浏览器,支持颜色.表格.鼠标.菜单操作. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法 ...
- Mysql不锁表备份之Xtrabackup的备份与恢复
一.Xtrabackup介绍 MySQL冷备.热备.mysqldump都无法实现对数据库进行增量备份.如果数据量较大我们每天进行完整备份不仅耗时且影响性能.而Percona-Xtrabackup就是为 ...
- 【编程思想】【设计模式】【创建模式creational】建造者模式builder
Python版 https://github.com/faif/python-patterns/blob/master/creational/builder.py #!/usr/bin/python ...
- Mysql 分页查询sql优化
先查下数据表的总条数: SELECT COUNT(id) FROM ts_translation_send_address 执行分页界SQL 查看使用时间2.210s SELECT * FROM ts ...
- 团队协作项目——SVN的使用
参考文献:https://www.cnblogs.com/rwh871212/p/6955489.html 老师接了一个新项目,需要团队共同完成开发任务,因此需要SVN.SVN是C/S架构: 1.服务 ...
- Go modules基础精进,六大核心概念全解析(上)
点击一键订阅<云荐大咖>专栏,获取官方推荐精品内容,学技术不迷路! Go 语言做开发时,路径是如何定义的?Go Mudules又为此带来了哪些改变?本文将会全面介绍Go modules六大 ...