欢迎访问元宇宙中文社区,在这里大家可以提问,回答,分享,诉说,一起构建一个元宇宙社区。

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/,邮箱后缀可以是网站域名。开通企业邮箱一定确保域名解析生效。

       

技术架构

  直接上图吧

后续规划

  整个架构已经成型,基础功能已ready,目前待优化的能力有:
  1. 数据检索迁移到独立的Elasticsearch,目前帖子的增加,删除,修改直接影响索引,模块之间强耦合,未来通过监听mysql binlog的方式实现索引的增量更新。
  2. 在用户和帖子的服务层面有redis缓存,和搜索功能类似,未来将redis迁移到独立的ECS。
  3. 监控指标只有曝光PV,搜索PV,帖子PV等,各种业务指标还需要完善,待接入阿里云的CMS。
  4. 缺乏点击率 和 用户纬度的特征,导致目前精排能力有限,帖子搜索和推荐的并没有实现精排的能力。
  5. 资金有限,资源有限,访问量也有限,期待志同道合的人一起打造一个元宇宙社区。

欢迎访问元宇宙中文社区,在这里大家可以提问,回答,分享,诉说,一起构建一个元宇宙社区。

元宇宙(metaverse)中文社区-工程实践的更多相关文章

  1. 乘风破浪,遇见未来元宇宙(Metaverse)之进入元宇宙世界,虚拟数字人行业洞察报告

    正值元宇宙热潮,虚拟数字人兴起 作为⼀个新兴领域,虚拟数字⼈已经引起市场和资本的⾼度关注,截⾄目前据不完全统计,全球范围已有500+虚拟数字人相关项目获得融资,融资总额超10亿美元,并且融资项目和总额 ...

  2. Three.js实现脸书元宇宙3D动态Logo

    背景 Facebook 近期将其母公司改名为 Meta,宣布正式开始进军 元宇宙 领域.本文主要讲述通过 Three.js + Blender 技术栈,实现 Meta 公司炫酷的 3D 动态 Logo ...

  3. 构建“元宇宙”,有哪些3D建模方式?

    "沉浸.3D世界.虚拟社交.虚拟购物",最近"元宇宙"的概念特别火.人们畅想通过AR/VR以及其他互联网技术,把现实世界的楼房街道.天气温度.人际关系等投射到虚 ...

  4. Awesome metaverse projects (元宇宙精选资源汇总)

    Awesome Metaverse 关于 Metaverse 的精彩项目和信息资源列表. 由于关于 Metaverse 是什么存在许多相互竞争的想法,请随时以拉取请求.问题和评论的形式留下反馈. We ...

  5. GIS :元宇宙未来发展的有力技术支撑

    摘要:元宇宙是描述未来互联网迭代发展的一个概念,是一个将现实世界和虚拟世界相互融合的一个可感知的持久.共享的3D虚拟空间组成的世界. 本文分享自华为云社区<[云驻共创]元宇宙漫游指南-新一代GI ...

  6. VS Code 中文社区正式成立啦!VS Code Day 圆满落幕!

    背景简介 Visual Studio Code 是一款现代化轻量级代码编辑器,它免费.开源.跨平台.功能强大.本次 VS Code Day 是广大 VS Code 爱好者一起学习与交流的盛会,让我们对 ...

  7. 从产业链、架构和技术三个层面,看元宇宙与RPA的发展关系

    你可能还不知道,元宇宙也将带动RPA高速发展 一文读懂RPA如何赋能元宇宙,虚拟空间更需要RPA无处不在 三个层面,解读元宇宙如何利好RPA行业发展 从产业链.架构和技术三个层面,看元宇宙与RPA的发 ...

  8. 另一个角度看元宇宙与RPA:人工世界、平行员工与RPA

    另一个角度看元宇宙与RPA:人工世界.平行员工与RPA 从元宇宙到平行员工,人工世界推动的虚实分工利好RPA 机器人是铁打营盘人类是流水兵,未来元宇宙的虚实分工RPA机会巨大 文/王吉伟 元宇宙是平行 ...

  9. go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE

    go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE Go语言是谷歌2009发布的专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速 ...

随机推荐

  1. flink03-----1.Task的划分 2.共享资源槽 3.flink的容错

    1. Task的划分 在flink中,划分task的依据是发生shuffle(也叫redistrubute),或者是并行度发生变化 1.  wordcount为例 package cn._51doit ...

  2. ES6必知,变量的结构赋值。

    对象和数组时 Javascript 中最常用的两种数据结构,由于 JSON 数据格式的普及,二者已经成为 Javascript 语言中特别重要的一部分. 在编码过程中,我们经常定义许多对象和数组,然后 ...

  3. Oracle中常用的系统表

    1.dba开头的表 dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_objects 数据库对象信息 dba_tablespaces ...

  4. 03-Collection用例管理及批量执行

    当我们对一个或多个系统中的很多用例进行维护时,首先想到的就是对用例进行分类管理,同时还希望对这批用例做回归测试 .在postman也提供了这样一个功能,就是Collection .通过这个Collec ...

  5. 文件管理与XMl、JSON解析

    1.使用内部存储器 你可以直接保存文件在设备的内部存储.默认情况下,文件保存在你的应用程序的内部存储,其他应用程序或用户不能访问.当用户卸载你的应用城西是,这些文件被删除. (一)在内部存储创建并写入 ...

  6. Linux:while read line与for循环的区别

    while read line:是一次性将文件信息读入并赋值给变量line , while中使用重定向机制,文件中的所有信息都被读入并重定向给了整个while 语句中的line 变量. for:是每次 ...

  7. 理解css中的 content:" " 是什么意思

    css中的属性是插入生成的内容,它一般与伪元素:befor和 :after 配合使用. content:"." 就表示在需要的地方插入"." 注意:如果已经规定 ...

  8. xtra+binlog增量备份脚本

    目录 一.备份原理 innobackupex原理 binlog原理 特点 备份策略 二.环境准备 开启binlog 创建授权用户 安装innobackupex 三.添加脚本 全量备份 增量备份 bin ...

  9. 10 - Vue3 UI Framework - Tabs 组件

    标签页是非常常用的组件,接下来我们来制作一个简单的 Tabs 组件 返回阅读列表点击 这里 需求分析 我们先做一个简单的需求分析 可以选择标签页排列的方向 选中的标签页应当有下划线高亮显示 切换选中时 ...

  10. CF938B Run For Your Prize 题解

    Content 有两个人,一个在 \(1\) 处,一个在 \(10^6\) 处,在他们之间有 \(n\) 个奖品,第 \(i\) 个奖品在 \(a_i\) 处.一开始在 \(1\) 处的人每秒可向右移 ...