历代文学-技术生态-总体介绍

news2024/11/14 13:43:57

1. 历代文学简介

历代文学(https://literature.sinhy.com/#/literature?__c=1000,微信小程序可直接搜索“历代文学”)是一个由两个人(一个后端和一个前端)开发的文学网站,是一个收录从古到今、以及古今中外所有历史名人作品的网站。网站从上线至今差不多1年时间,从未有过大肆宣传推广,累计访问人次却高达近百万次

在这里插入图片描述收录古今中外几乎所有名人的名言高达130万条!

在这里插入图片描述

2. 历代文学技术生态

历代文学网站整个技术生态由我本人总体架构设计。简单来讲,这是一个平台级的微服务架构,以云原生的概念来讲,可能算得上60%左右的云原生

2.1 云原生概念

在这里插入图片描述

前面,我们讲述了什么是云原生。在这里我们就不再深入探讨什么是云原生了,简单回顾下云原生的概念就好,好让大家对历代文学后续的整个技术生态介绍能有个整体概况。

云原生指构建和运行应用以充分利用通过云技术交付模式交付的分布式计算。云原生应用旨在充分利用云技术平台特有的可扩展性弹性和灵活性优势。

2.2 服务器&运行环境

历代文学应用,它只是整个云平台应用生态的一个子应用而已,整个云平台技术生态是一个相对庞大的体系。它牵涉到云原生很多必不可少的组件如微服务、基础设施、容器、网关等内容。

2.2.1 服务器硬件环境

整个云平台最终是部署到2台服务器中

  • 服务器180核,128G内存,18T存储空间,6个万兆级网口,该服务器是华为2U机架式服务器(V5 2288H)硬件环境相对较好,充当整个云平台的核心压力。
    在这里插入图片描述

  • 服务器248核,128G内存,3T存储空间,该服务器主要运行一些云平台相关但不必要一些小应用,如大后台管理,访问统计,邮件服务等一些公司运营方面的小应用。
    在这里插入图片描述

2.2.2 服务器1划出的虚拟机

这两台服务器,通过ESXI(vmvare)虚拟化技术,将其划分为了若干个业务和基础环境需要的虚拟机。其中服务器1主要被虚拟化为以下节点,如下图:

在这里插入图片描述

  • IM集群:主要充当整个平台的即时消息架构,可横向伸缩,所有需要跟客户端即时通讯的,都通过IM集群这两个节点进行交互。
  • 分布式存储集群:充当整个平台的大数据存取服务,可横向伸缩,整个平台,所有子应用,需要用到上传的,都靠这个大数据平台统一支撑。
  • 数据库集群:充当整个平台业务的结构化数据存取服务。
  • 基础环境集群:该集群主要用于搭建整个分布式微服务体系的基础环境,如注册中心集群、缓存集群、分布式任务调度集群、消息队列集群等。
  • 业务应用:整个平台的所有业务子应用全部部署到业务应用节点,业务应用节点是可以根据业务流量无限动态伸缩的,采用K8S容器化管理和编排部署。
  • 网关:充当整个云平台的网关,统一转发和处理所有客户端请求到各业务实例,还负责客户端的安全加密通信,以及监听客户端的暴力请求,发现存在暴力的客户端,将对其采取ip封锁等惩罚机制。

2.3 技术生态介绍

历代文学和整个云平台体系所使用的技术生态,将主要从操作系统、微服务和容器化三个方向进行阐述。

2.3.1 操作系统

经过多方面的对比,最终果断从centos、ubuntu等系统中跳了出来,选择了一款国产化的操作系统openEuler,别问我太多为什么,我在这里也不是为了宣传它,只是简单略过介绍以下。看下它的诞生和发展就知道了:

2010-2012,EulerOS诞生:华为内部高性能计算项目EulerOS首次发布。
2013-2016,EulerOS1.x系列:华为内部ICT产品首次规模商用,包括存储产品、无线控制器、CloudEdge等。
2016-,EulerOS 2.x系列:华为内部云产品商用以及ICT产品规模商用,包括消费者云、华为公有云、存储产品、无线产品、云核心网等。
2019年12月31日,华为作为创始企业发起了openEuler开源社区,并将EulerOS相关的能力贡献到openEuler社区,后续EulerOS将基于openEuler进行演进。
2021年9月25日,华为正式发布操作系统 openEuler 欧拉。 2021年11月5日消息,openEuler Summit 将于11 月 9 日-10 日在北京召开。此次峰会由欧拉开源社区举办,华为作为战略合作单位。 2022年10月2日消息,openEuler22.09 正式版发布:实现欧拉与鸿蒙的互联互通。 2022年12月16日消息,openEuler 宣布全球下载量突破 100万,开源欧拉将在12月28日-29日举行操作系统产业峰会2022&openEuler Summit 2022。
截至2022年12月底,开源欧拉社区企业成员数超过600家,商业累计装机部署数量达300万套,在中国服务器操作系统的新增市场中,欧拉的市场份额达25%。
2023年4月,经过openEuler委员会全体会议的批准,openEuler工业领域操作系统筹备委员会正式成立。

在这里插入图片描述
欧拉开源社区已吸引近万名开发者,近百个特别兴趣小组,300家企业加入社区,汇聚处理器、整机、基础软件、应用软件、行业用户等全产业链伙伴。国内主流的操作系统厂商均推出基于欧拉的商业发行版,应用于政府、运营商、金融、能源、电力、交通等行业核心系统。欧拉商用已经突破60万套,有望实现中国服务器领域新增市场份额第一。

看到这里,你们还不心动吗?我为什么要选择它,因为它高性能,占用资源低,每次重启只需要不到10秒时间,社区活跃,发展迅猛!能不用它吗?

2.3.2 微服务技术生态

中间件名称版本简介
Nacos2.4.0服务器注册与发现
Rocketmq5.3.0异步消息队列
Redis7.2高频访问数据缓存
redisson3.33.0基于redis的分布式数据结构应用接口
spring-boot3.3.0spring应用生态的基础
spring-cloud2023.0.3spring最新版本微服务基础
spring-cloud-alibaba2023.0.1.2阿里的基于nacos实现的微服务注册与发现
spring-cloud-starter-gateway4.1.5微服务网关
postgresql16.3PG数据集群的数据库版本
minio8.5.11基于S3标准的 分布式文件存取中间件

2.3.3 应用实例划分介绍

实例名实例个数实例介绍
nacos应用2微服务服务注册发现中间件实例
rocketmq应用42m-2s-sync即2主2从集群模式
即时通讯2无任何第三方接口依赖,纯自己打造的IM分布式即时通讯组件
分布式文件服务2平台级的分布式文件存取服务实例
头像应用1用于个人中心,用于自己设置头像,或者选择内置的头像
历代文学应用1历代文学自身业务功能的应用实例
辞典应用1历代文学的辞典模块功能,即为该应用实例提供的服务
统一认证中心1整个平台的SSO单点登录统一认证服务
个人中心1整个平台的用户个人中心应用,个人设置,修改密码,头像等基础功能
系统应用1提供平台级基础配置功能服务
国际化应用1每个实例都支持国际化切换,每个实例的国际化配置是通过该应用处理
访问统计服务1对用户的行为进行统一统计分析的实例
后台管理应用1整个云平台的统一大后台管理系统实例,负责权限分配,可查看访问流量等所有管理功能
平台守护应用1负责对所有登录用户的会话进行监听,监听其过期时间
电影应用1这是整个平台的另一个子应用(电影应用),可免费看电影,在官网可以看到入口
官网应用1官网入口应用实例
网关应用1整个云平台所有业务流量统一进出口

2.3.4 应用的容器化部署

整个云平台下,所有微服务实例,以及大部分基础设施环境都采用容器化部署,目前规模较小,暂时采用的docker部署,后续会慢慢切换到k8s容器自动化管理和编排!如下图,可以看到历代文学应用也在其中,通过docker容器化部署模式运行!
在这里插入图片描述

3. 总结

好拉,以上就是历代文学子应用背后所涉及的整个技术生态,及其整个技术架构体系简单介绍,这完完全全是由两个人联手打造的,我主要负责后端整体架构设计,另一个伙伴负责前端整体架构设计。

这个网站为了后续长远发展规划,背后很多技术都是自主研发,包括IM分布式即时通讯组件,可用于开发聊天(历代文学里面进去,右上角就可以看到有个聊天窗口),消息通知等各种即时通讯功能。以及自主研发的分布任务调度组件数据库低代码组件一个真正做到零sql语句的数据库快速开发的低代码工具),前后端加密通讯组件等。

如下这段代码,是查询历代文学的作者分页列表,展示的是一个类似原生SQL写法的写法,涉及3个表的关联查询,看着是否会觉得优雅?

            NuwadQuery nq = new NuwadQuery();
            nq.select(LiteratureAuthor2Table.ID
                    , LiteratureAuthor2Table.NAME
                    , LiteratureAuthor2Table.ALIAS
                    , LiteratureAuthor2Table.EN_NAME
                    , LiteratureAuthor2Table.DYNASTY_ID
                    , LiteratureAuthor2Table.DYNASTY_NAME
                    , LiteratureAuthor2Table.WRITING_COUNT
                    , LiteratureAuthor2Table.CI_COUNT
                    , LiteratureAuthor2Table.QU_COUNT
                    , LiteratureAuthor2Table.SANWEN_COUNT
                    , LiteratureAuthor2Table.WYW_COUNT
                    , LiteratureAuthor2Table.VERSE_COUNT
                    , LiteratureAuthor2Table.BOOK_COUNT
                    , LiteratureAuthor2Table.QUOTE_COUNT)
                .select(SysUserInfoTable.AVATAR, SysUserInfoTable.WX_HEADIMGURL, SysUserInfoTable.AVATAR_TYPE, SysUserInfoTable.PROFILE)
                .select(SysOccupationTable.NAME, SysOccupationTable.EN_NAME)
                .from(LiteratureAuthor2Table.class)
                .leftJoin(SysUserInfoTable.class).on(LiteratureAuthor2Table.ID).eq(SysUserInfoTable.ID)
                .leftJoin(SysOccupationTable.class).on(LiteratureAuthor2Table.OCCUPATION).eq(SysOccupationTable.ID);

如下图,是历代文学前后端加密的通讯方式,连请求地址都是加密的,且通讯密钥是动态更新的。
在这里插入图片描述响应内容加密:
在这里插入图片描述

好了,本期内容就到这里,有兴趣的小伙伴,可以关注我,后续我会陆续分享整个云平台下用到很多精湛的技术,包括自主研发的中间件等各类组件,也可以评论区留言想期待哪方面的技术实现分享,这对想系统化学习微服务架构及并应用于实战的朋友是个好的机会,因为这是一个活生生的云产品案例!感谢大家拜读本文~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1995481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++之运算符重载系列深入学习:从入门到精通!

为什么需要对运算符进行重载 C预定义中的运算符的操作对象只局限于基本的内置数据类型,但是对于我们自定义的类型是没有办法操作的。但是大多时候我们需要对我们定义的类型进行类似的运算,这个时候就需要我们对这么运算符进行重新定义,赋予其…

智能家居中高性能联网通信方案,乐鑫ESP32-S3/C3无线Wi-Fi蓝牙应用

随着科技的飞速发展,智能家居已经不再是科幻小说中的概念,而是走进了千家万户的现实生活。 智能家居是广泛的系统性产品概念,以住宅为载体,运用物联网、网络通信和人工智能等技术,接收信号并判断,提供更加…

美股全线反弹,市场情绪回暖

一、市场概况 昨夜美股三大股指全线收涨,市场情绪明显回暖。道琼斯工业平均指数上涨1.76%,纳斯达克综合指数上涨2.87%,标普500指数则上涨2.3%。美债市场方面,美国十年期国债收益率上涨1.141%,报3.99%,两年…

[ Python ]使用Charles对Python程序发出的Get与Post请求抓包-解决Python程序报错问题

目录 一、前言 二、Charles 三、抓取Python请求 3.1 正常运行 3.2 程序报错 3.2.1 报错信息 3.2.2 解决方法 3.3 取消警告信息 四、总结 一、前言 在Python开发中,网络请求是常见的操作之一。无论是使用内置的urllib库还是第三方库requests,都可…

Java小白入门到实战应用教程-Scanner类及IO流讲解

Java小白入门到实战应用教程-Scanner类及IO流讲解 Scanner类 我们前面写的很多例子都是程序独自执行的,但是我们做编程写代码的目的是要实现能人和代码去交互的。 现在我们就来了解一个知识点,去实现最简单的人和程序的交互。 在java中通过Scanner类…

MySQL第3讲--数据类型和表的修改和删除

文章目录 前言数据类型数值类型整数类型浮点数和定点数 字符串类型字符类型:文本类型:二进制数据类型 日期和时间类型实例分析 表的操作添加字段修改字段删除字段修改表名删除表 DDL总结DDL数据库操作DDL表操作 前言 上一节在MySQL第2讲–关系型数据库以…

kubernetes 管理平台 Pod管理多容器 与嵌入式脚本

资源清单文件 模板与帮助信息 管理资源对象 多容器 Pod 管理多容器 Pod 自定义任务 容器保护策略 宽限期策略 Pod调度策略

CUDA编程从零到壹

如今,当我们谈论深度学习时,为了提高性能,我们通常会将其实现与使用 GPU 联系起来。 GPU(图形处理单元)最初设计用于加速图像、2D 和 3D 图形的渲染。然而,由于它们能够执行许多并行操作,它们的…

linux 源码部署polardb-x 错误汇总

前言 在linux 源码部署polardb-x 遇到不少错误,特在此做个汇总。 问题列表 CN 启动报错 Failed to init new TCP 详细错误如下 Caused by: Failed to init new TCP. XClientPool to my_polarx#267b21d8127.0.0.1:33660 now 0 TCP(0 aging), 0 sessions(0 runni…

【汇总】测开高频面试题

加油 !!! 🔥 谈谈对测试的理解 我认为测试是发现并及时解决问题:包括功能、性能、用户体验❤️等方面的验证 … 通过提前定位并修复缺陷,可以减少未来维护成本、保障软件质量、提升用户满意度❤️ … 我了…

大麦/猫眼抢票-狠货

大部分购买方式已迁移至手机端,专注研究移动端 小白操作–仅供学习 注意在帐号按权重的第三方账号设置解绑淘宝,否则有可能在抢票时候出现滑块,影响抢票,抢票优先选择大麦 ⚠️核心内容参考: 据悉,在购票环节&…

23_windows 使用sqlmap、kali使用sqlmap,SQL注入、sqlmap自动注入

sqlmap介绍 安装sqlmap 安装python环境 链接:https://pan.baidu.com/s/16QhhYCppSvuUikhKiOHNgg?pwd9LJY 提取码:9LJY C:\Users\leyilea> python // 测试python能不能用 >>> exit() // 退出 测试sqlmap是否可用 kali中运行sqlmap&#xff…

KAN网络简明教程

在不断发展的机器学习领域,最近一篇题为“KAN:柯尔莫哥洛夫-阿诺德网络”的研究论文在爱好者中引发了一波热潮。这种创新方法挑战了多层感知器 (MLP) 的传统观点,为神经网络架构提供了全新的视角。 NSDT工具推荐: Three.js AI纹理…

Qt 实战(9)窗体 | 9.2、QDialog

文章目录 一、QDialog1、基本概念2、常用特性2.1、模态与非模态2.2、数据交互 3、总结 前言: Qt框架中的QDialog类是一个功能强大且灵活的对话框控件,广泛应用于各种GUI(图形用户界面)应用程序中,用于处理用户输入、消…

map/multimap容器

一、 map基本概念 简介: map中所有元素都是pair pair中第一个元素为key(键值),起到索引惟用,第二个元素为value(实值) 所有元素都会根据元素的键值自动排序 本质: map/multimap属于关联式容器,底层结构是用二叉树实现 优点: 可以根据ke…

欧拉系统离线安装界面ukui

1、官网下载安装镜像iso后,默认没有gui openEuler | 开源社区 | openEuler社区官网openEuler是一个开源、免费的 Linux 发行版平台,将通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系。同时,openEuler 也是…

数据结构与算法|算法总结|动态规划篇之子序列、子数组问题

首先我们要明确以下两个问题: 子序列:子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 子数组:子数组是数…

HTTP协议基础知识【后端 4】

HTTP协议基础知识 HTTP(Hyper Text Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,它定义了客户端(如浏览器)与服务器之间数据传输的格式和规则。无论是浏览网页、在线购物还是使…

常见漏洞扫描工具!

AWVS 下载链接: 链接: https://pan.baidu.com/s/1rFq9iMV8oluumyylA22MFg?pwdmyc2 提取码: myc2 打开awvs安装⼯具,一路默认,不要修改文件安装路径,不然会失败; email和password是之后登录服务的账号密码&#xf…

算法日记day 34(动归之使用最小花费爬楼梯|不同路径2|整数拆分|不同的二叉搜索树)

一、使用最小花费爬楼梯 题目: 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返…