环境搭建、SpringCloud微服务(注册发现、服务调用、网关)
1)课程对比
2)项目概述
外卖:单体架构(单体,用户服务商品服务打jar包、ssm Spring、springmvc、mybatis)无法高可用(挂nginx-war集群)
SOA:服务之间拆分模块,项目太大便于开发、解耦,互相之间不影响 服务治理;项目之间互相访问。dubbo比较早的分布式框架,简单的服务治理,调用互相称为生产者消费者。
2.1)能让你收获什么
2.2)项目课程大纲
2.3)项目概述
随着智能手机的普及,人们更加习惯于通过手机来看新闻。由于生活节奏的加快,很多人只能利用碎片时间来获取信息,因此,对于移动资讯客户端的需求也越来越高。黑马头条项目正是在这样背景下开发出来。黑马头条项目采用当下火热的微服务+大数据技术架构实现。本项目主要着手于获取最新最热新闻资讯,通过大数据分析用户喜好精确推送咨询新闻
类似于今日头条,是一个新闻资讯类的项目,像现在手机上一定会有腾讯新闻,新浪、网易新闻 类似的app; 为什么开发这样的额项目呢? 人们在手机上查看信息
2.4)项目术语
产品经理提供的功能架构图:
移动客户端, 供用户查看文章的,查看文章内容,关注,点赞,收藏,评论切换频道,搜索文章
自媒体端:发布文章 文章的数据展示,最重要的功能发布文章,可以查看以往内容的列表,文章图片素材,粉丝数报表的统计
管理平台:后台对违规内容进行管理(官方) 实名认证审核工作,文章上传和下架的工作,频道管理,敏感词设置
2.5)业务说明
项目演示地址:
平台管理与自媒体为PC端,用电脑浏览器打开即可。
其中app端为移动端,打开方式有两种:
-
谷歌浏览器打开,调成移动端模式
-
手机浏览器打开或扫描右侧二维码
3)技术栈
-
Spring-Cloud-Gateway : 微服务之前架设的网关服务,实现服务注册中的API请求路由,以及控制流速控制和熔断处理
-
运用Spring Boot快速开发框架,构建项目工程;并结合Spring Cloud全家桶技术,实现后端个人中心、自媒体、管理中心等微服务。
-
运用Spring Cloud Alibaba Nacos作为项目中的注册中心和配置中心
-
运用mybatis-plus作为持久层提升开发效率
-
运用Kafka完成内部系统消息通知;与客户端系统消息通知;以及实时数据计算
-
运用Redis缓存技术,实现热数据的计算,提升系统性能指标
-
使用Mysql存储用户数据,以保证上层数据查询的高性能
-
使用Mongo存储用户热数据,以保证用户热数据高扩展和高性能指标
-
使用FastDFS作为静态资源存储器,在其上实现热静态资源缓存、淘汰等功能
-
运用Hbase技术,存储系统中的冷数据,保证系统数据的可靠性
-
运用ES搜索技术,对冷数据、文章数据建立索引,以保证冷数据、文章查询性能
-
运用AI技术,来完成系统自动化功能,以提升效率及节省成本。比如实名认证自动化
-
PMD&P3C : 静态代码扫描工具,在项目中扫描项目代码,检查异常点、优化点、代码规范等,为开发团队提供规范统一,提升项目代码质量
4)==nacos环境搭建==
4.1)虚拟机镜像准备
1)打开当天资料文件中的镜像,拷贝到一个地方,然后解压
2)解压后,双击ContOS7-hmtt.vmx文件,前提是电脑上已经安装了VMware
3) 修改虚拟网络地址(NAT)
①,选中VMware中的编辑
②,选择虚拟网络编辑器
③,找到NAT网卡,把网段改为200(当前挂载的虚拟机已固定ip地址)
4)修改虚拟机的网络模式为NAT
5)启动虚拟机,用户名:root 密码:itcast,当前虚拟机的ip已手动固定(静态IP), 地址为:192.168.200.130
6)使用FinalShell客户端链接
4.2)nacos安装
①:docker拉取镜像
docker pull nacos/nacos-server:1.2.0
②:创建容器
docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 nacos/nacos-server:1.2.0
-
MODE=standalone 单机版
-
--restart=always 开机启动
-
-p 8848:8848 映射端口
-
-d 创建一个守护式容器在后台运行
③:访问地址:http://192.168.200.130:8848/nacos
5)==初始工程搭建==
5.1)环境准备
①:项目依赖环境(需提前安装好)
-
JDK1.8
-
Intellij Idea
-
maven-3.6.1
-
Git
②:在当天资料中解压heima-leadnews.zip文件,拷贝到一个没有中文和空格的目录,使用idea打开即可
③:IDEA开发工具配置
设置本地仓库,建议使用资料中提供好的仓库
④:设置项目编码格式codestyle、fileEncodings
5.2)主体结构
==6)登录==
6.1)需求分析
-
用户点击开始使用
登录后的用户权限较大,可以查看,也可以操作(点赞,关注,评论)
-
用户点击不登录,先看看
游客只有查看的权限
6.2)表结构分析
关于app端用户相关的内容较多,可以单独设置一个库leadnews_user
表名称 | 说明 |
---|---|
ap_user | APP用户信息表 |
ap_user_fan | APP用户粉丝信息表 |
ap_user_follow | APP用户关注信息表 |
ap_user_realname | APP实名认证信息表 |
从当前资料中找到对应数据库并导入到mysql中
登录需要用到的是ap_user表,表结构如下:
项目中的持久层使用的mybatis-plus,一般都使用mybais-plus逆向生成对应的实体类
app_user表对应的实体类如下:
package com.heima.model.user.pojos; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * <p> * APP用户信息表 * </p> * * @author itheima */ @Data @TableName("ap_user") public class ApUser implements Serializable { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 密码、通信等加密盐 */ @TableField("salt") private String salt; /** * 用户名 */ @TableField("name") private String name; /** * 密码,md5加密 */ @TableField("password") private String password; /** * 手机号 */ @TableField("phone") private String phone; /** * 头像 */ @TableField("image") private String image; /** * 0 男