zoukankan      html  css  js  c++  java
  • 3.爱收藏——系统架构

    一、简介

      爱收藏系统,以微服务为核心,按照业务来划分模块,前后端分离。存储以关系型数据库为主,redis存储登录相关数据。前端使用vue开发,nginx作为静态文件服务器。使用docker部署,容器包括前后端服务、基础服务、初始化服务。使用portainer作为docker管理工具。github作为代码仓库。镜像的构建和运维,使用shell脚本。

      系统分为4大模块:数据层、处理层、展示层、效率工程。整体架构图如下:

    二、数据层

      数据层,是系统的数据存储中心,使用Mariadb和Redis。

      Mariadb,存储各个业务需要持久化的数据,业务包括包括用户、网站。提供一个数据库实例,有用户、网站两个数据库。

      Redis,存储用户模块登录用户的信息,包括用户token、用户角色权限关系。

    三、处理层

      按照业务来划分微服务,使用spring Cloud实现微服务。

      服务实例包括:

      注册中心:使用Eureka实现注册中心,用于各个微服务进行服务注册和服务发现。其他微服务都需要向注册中心注册,各个微服务之间的调用使用FeignClient,从注册中心发现需要调用的服务实例。

      认证中心:实现用户、角色、权限管理,提供用户、角色、权限的增删改查接口。实现用户认证、鉴权,提供用户登录、注销,以及权限校验接口。作为各个微服务的资源访问鉴权中心,用户访问系统资源,会被拦截,再去请求认证中心,判断当前用户是否有访问该资源的权限。

      网址管理服务:实现首页网址、个人网址管理。提供首页网址、个人网址的增删改查接口。

    四、展示层

      使用vue实现,界面元素使用ElmentUI。主要功能是调用后端接口,展示数据。

      nginx作为前端静态文件的服务器。

      集成了github登录功能。

      集成了github留言功能,使用github的issue功能实现。  

    五、效率工程

     1、docker

      镜像划分为3类:基础服务镜像、初始化镜像、后端服务镜像。

      基础服务镜像:为系统提供基本服务的组件,不包含业务数据。组件包括Mariadb、Redis、Nginx。

      初始化镜像:系统初始运行需要执行的操作。包括认证中心建库建表sql脚本、网址管理服务建库建表sql脚本、前端静态文件。初始化镜像只需要运行一次。

      后端服务镜像:后端各个微服务。

      docker默认是没有非常友好的可视化界面,为了方便操作和管理镜像、容器,使用portainer系统。通过portainer,可以在界面上管理镜像、容器,查看系统运行状态,查看各个容器的日志等操作,替代了在docker中使用命令操作的方式。

     2、shell

      为了更方便的解决系统开发部署过程中,一系列的手动操作,使用shell脚本来实现自动化操作。shell脚本分为以下几类:

      (1)镜像制作

        镜像制作分为后端服务镜像的制作、前端镜像的制作、mariadb初始化镜像的制作。

        后端服务镜像的制作,shell脚本中先调用mvn的构建方法,将java项目构建生成jar包,再使用Dockerfile将jar包打成镜像。

        前端镜像的制作,shell脚本先调用npm的构建方法,将前端项目构成生成静态文件,再使用Dockerfile将静态文件打成镜像。

        mariadb初始化镜像的制作,shell脚本拷贝sql语句到一个文件夹中,Dockerfile中再将sql拷贝到镜像中。

        再在shell脚本中使用docker save命令将镜像生成tar包。

      (2)系统部署

        系统部署shell,先加载tar包,再删除之前的容器,再部署镜像。

      (3)镜像更新

        将本地镜像打成tar包,上传至服务器,在服务器上加载镜像。

      (4)系统清除

        清除掉系统相关的容器、镜像、挂载文件。

      (5)服务器登录

        远程登录服务器。

  • 相关阅读:
    使用PLSql连接Oracle时报错ORA-12541: TNS: 无监听程序
    算法7-4:宽度优先搜索
    R语言字符串函数
    notepad++ 正则表达式
    MySQL常用命令
    linux下对符合条件的文件大小做汇总统计的简单命令
    Linux系统下统计目录及其子目录文件个数
    R: count number of distinct values in a vector
    ggplot2 demo
    R programming, In ks.test(x, y) : p-value will be approximate in the presence of ties
  • 原文地址:https://www.cnblogs.com/leanfish/p/12941724.html
Copyright © 2011-2022 走看看