1.系统架构
1.0 架构演变
1.0.1 垂直结构
存在的问题:
- 代码耦合,开发维护困难
- 无法针对不同模块进行针对性优化
- 无法水平扩展
- 单点容错率低,并发能力差
1.0.2 垂直拆分
优点:
- 系统拆分实现了流量分担,解决了并发问题
- 可以针对不同模块进行优化
- 方便水平扩展,负载均衡,容错率提高
缺点:
- 系统间相互独立,会有很多重复开发工作,影响开发效率
1.0.3 分布式服务
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务
优点:
- 将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率
缺点:
- 系统间耦合度变高,调用关系错综复杂,难以维护
1.0.4 微服务
微服务的特点:
- 单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
- 微:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
- 面向服务:面向服务是说每个服务都要对外暴露Rest风格服务接口API。并不关心服务的技术实现,做到与平台和语言无关,也不限定用什么技术实现,只要提供Rest的接口即可。
- 自治:自治是说服务间互相独立,互不干扰
- 团队独立:每个服务都是一个独立的开发团队,人数不能过多。
- 技术独立:因为是面向服务,提供Rest接口,使用什么技术没有别人干涉
- 前后端分离:采用前后端分离开发,提供统一Rest接口,后端不用再为PC、移动段开发不同接口
- 数据库分离:每个服务都使用自己的数据源
- 部署独立,服务间虽然有调用,但要做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替换,降低耦合,易维护
1.1 架构
1.2 前端技术简述
- Vuetify
vuetify是一个Vue的UI库,提供非常丰富的Vue组件供开发者使用,它支持SSR(服务端渲染),单页应用程序等。 - NUXT
这个老师没有讲相关的知识,门户网站页面是用Nuxt结合Vue完成页面开发,出于SEO优化的考虑,不采用单页应用。
(ps:nuxt是做服务器渲染之类的,但是搜索引擎要搜索到页面,必须是有有效数据存在的静态页面,而Vue是动态的,用nuxt可以产生带有数据的静态页面) - Vue.js
Vue不是一个全能框架,它只聚焦于视图层,目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 - WebPack
WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。 - WebSocket
实现客户端和服务器之间的数据交换。
node、WebPack、npm之间的联系与区别
node是js后端运行平台,可以把它看成java体系中对应的jdk。
npm是nodejs的包管理工具,可以把它看成maven中包依赖管理那部分。
webpack是前端工程化打包工具,可以把它看成maven中工程自动化构建那部分。
- node与npm
1.3 前端技术选型
- 基础的HTML、CSS、JavaScript(基于ES6标准)
- Vue.js 2.0以及基于Vue的UI框架:Vuetify
- 前端构建工具:WebPack
- 前端安装包工具:NPM
- Vue脚手架:Vue-cli
- Vue路由:vue-router
- ajax框架:axios
- 基于Vue的富文本框架:quill-editor
其中: IDEA要设置 语法 否则程序会有红色波浪线报错