这里写目录标题

  • 一:环境搭建
  • 二:项目搭建
  • 三:分布式组件--Spring Cloud Alibaba
    • 1.微服务架构简介
    • 2.为什么使用SpringCloud Alibaba作为组件
    • 3.本次项目技术构成
  • 四:SpringCloud Alibaba-Nacos引入
  • 五:服务调用
    • 调用前须知
  • 六:Nacos注册中心实现
    • 1.如何Nacos注册中心实现
    • 2.细节
    • 3.最终实现版本
  • 七.API网关-Gateway
    • 创建步骤
  • 八.前端简介
    • 1.ES6
    • 2.Vue
      • 1.MVVM思想
      • 2.Vue实例操作
  • 八.整合阶段
    • 1.配置网关和路由重组
    • 2.网关统一配置跨域

一:环境搭建

本次项目在Linux系统下运行,虚拟机为VMware,操作系统为Centos8,需要的工具有Docker,MySql5.7,Redis,Git。

  1. MySql5.7:安装好docker’后,pull进来MySql5.7,配置好端口映射、目录挂载等,再创建my.cnf文件来配置MySql5.7。
docker下mysql配置:my.cnf
【client】
default-character-set=utf8
【mysql】
default-character-set=utf8
【mysqld】
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collection-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
设置mysql密码,挂载目录,端口映射等
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
  1. Redis下载安装如下
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.confdocker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

在redis.conf中配置如下命令,保证持久化

appendonly yes
  1. 修改maven配置文件,使用jdk1.8,并且使用阿里云加速
  2. 本地git连接码云
  3. 码云新建仓库,获取HTTP连接。在idea中new一个project from version control,使用git,链接为刚才的HTTP地址,将仓库导入idea成功。

二:项目搭建

  1. new一个module,每一个module都是我们的一个微服务,导入如下两个依赖,依照此步骤完成后续服务搭建。
  2. 需要的微服务搭建好后,在主pom文件中导入创建的module,刷新maven
  3. 在主.gitignore文件中添加忽略文件,将剩下的文件add to VCS,这样有更新时会在仓库中显示。
  4. 第一次提交,将文件commit,点击commit and push,即可同步到码云
  5. 创建数据库
    Navicat连接Linux中docker创建的mysql,建好数据库,导入sql文件
  6. 在码云“人人开源项目”中克隆下来“renren-fast”到项目主目录 ,链接为
    link.同样在主pom文件中加入module依赖。然后将其在其目录下db文件mysql.sql代入数据库,并修改resources-static-application-dev.yml。启动renren-fast主函数,此时已经能打开localhost
  7. 在人人开源克隆renren-fast-vue,有了这个才能和后端联动,下载好后用VSCode打开,安装node.js。安装完成后,在vscode打开项目终端,输入:npm install来下载依赖,完成后 npm run dev则可联动成功!!
  8. 在人人开源下载renren-generator,导入idea,配置好配置文件(给哪个微服务产生代码,和连接的数据库是哪个),启动后在http://localhost/#/generator.html自动生成代码
    生成成功后,解压将mian文件覆盖至原来服务的main
  9. 创建gulimall-common微服务,将一些公共依赖和类放进去,类似mybatis-plus-boot-starter,lombok,httpcore,commons-lang的依赖,并将原来renrne-fast的utils中的类转入到common的utils中(都是自己创建再复制进去),最终目的是使自动产生代码的微服务不再爆红!!

-----------------------------------------------------------------------------------2020.7.25
9.将需要自动生成代码的微服务(非common)添加配置文件application.yml来配置自己服务的数据库信息等。
10.以此类推,将所有微服务都自动生成代码并填写配置,我们的架构搭建告与段落。

三:分布式组件–Spring Cloud Alibaba

1.微服务架构简介

如图所示,必备注册中心,服务中心,网关。

  • 注册中心:每个微服务都应进入注册中心,这样若订单服务想远程调用商品服务,就会在注册中心查询是否有此服务,然后进行远程调用。
  • 配置中心:每个服务可能搭建在数十台服务器中,若要一一配置太繁琐,但在配置中心配置后,即可实现全场景更新。
  • 网关:前端请求进来后,先进入网关,由网关来进行过滤。

2.为什么使用SpringCloud Alibaba作为组件

  • 曾经的Spring Cloud部分组件停止更新。
  • 这些组件配置复杂,没有图形化界面,难以上手

3.本次项目技术构成

  • SpringCloud Alibaba-Nacos:注册中心(服务发现/注册),配置中心(动态配置管理)
  • SpringCloud Alibaba Sentinel:服务容错(限流,降级,熔断)
  • SpringCloud Alibaba Seata:分布式事务解决方案
  • SpringCloud Ribbon:负载均衡
  • SpringCloud Feign:声明式HTTP客户端(远程调用)
  • SpringCloud-Gateway:API网关(webflux编程模式)
  • SpringCloud-Sleuth:调用链监控

四:SpringCloud Alibaba-Nacos引入

  • 在官网下载安装好Nacos后,启动Nacos,用startup.cmd
  • ①在common中引入nacos的依赖spring-cloud-starter-alibaba-nacos-discovery,并②在每个微服务的application.yml中配置本地端口号,nacos服务地址,application name(在nacos中显示为服务名称)等,③在main函数中添加注解@EnableDiscoveryClient。最后启动微服务,即可在nacos网站http://localhost:8848/nacos中看到此微服务。

五:服务调用

调用前须知

  • 在将所有服务都写进nacos后,我们尝试用feign进行远程调用,下面我们就来学习feign的用法。
  • A服务想调用B服务的controler中的一个方法:①在A中创建一个servic接口,将B中的方法复制到此接口下,方法上注明@RequestMapping,为B中方法的原路径,不要变;②

-----------------------------------------------------------------------------------2020.7.26

六:Nacos注册中心实现

1.如何Nacos注册中心实现

1.引入依赖

      < dependency ><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version >2.1.0.RELEASE</version>< /dependency >

2.创建bootstrap.properties

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

3.在配置中心添加一个叫做数据集的(Data id)gulimall-coupon.properties,默认规则:应用名.properties即 $ {spring.application.name}.properties
4.在配置内容中添加任何配置即可
5.动态获取配置@RefreshScope @Value("$ {配置项的名字}"),
如 @Value("$ {user.name}")
6.如果配置中心和配置文件配置了相同的项,以配置中心为主

2.细节

1.命名空间:用作配置隔离
默认为public,默认新增所有配置都在public下

  • 可以用来开发,测试,生产环境下的不同配置,只需在bootstrap.properties中修改spring.cloud.nacos.config.namespace属性即可
  • 也可以用来隔离不同微服务之间的配置,来创建各自微服务自己的命名空间。

2.配置集:所有的配置集合
3.配置集ID:类似配置文件名
Data ID:类似文件名
4.配置分组Group
默认所有配置集属于DEFAULT_GROUP
可用来如双十一,618不同情景用不同组的配置。
可用bootstrap.properties中修改spring.cloud.nacos.config.group属性来配置
注:不同分组的化配置ID可相同。

3.最终实现版本

前面两点提到的依然需要为每一个微服务去添加文件,添加配置信息。如何更加简化呢,请看下面。

我们现在可以把从本地IDE修改配置直接移到Nacos注册中心去进行。首先,创建一个你需要的命名空间,在里面创建你需要的配置,想好它的Data ID,Group。配置内容则为application.yml中的配置信息原样搬来。

接下来在bootstrap.properties中添加如下信息

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=1612c202-aa35-4fe1-9331-5bcbec32ab3b
#只要指定了group分组,会自动读取dev分组下的
spring.cloud.nacos.config.group=devspring.cloud.nacos.config.ext-config[0].data-id=full.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true

七.API网关-Gateway

网关作为流量的入口,常用功能包括路由转发,权限校验,限流控制等。springgateway作为spring cloud官方推荐的第二代网关框架,取代了Zuul网关。

网关用处如下:
总结:当请求到达网关,网关利用断言判定请求是不是符合路由规则,如果符合,就按路由规则把他路由到指定地方,到这些地方要经过一系列的filter来进行过滤。

创建步骤

首先new一个module,只用带gateway插件即可,然后编写它的application.yml

spring:application:name: gulimall-gateway
server:port: 7005

bootstrap.properties

spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=f9bcc03e-e613-4e06-a519-1bc6a125e7dc
spring.cloud.nacos.config.group=dev

在Nacos中创建它自己的命名空间,再创建配置文件gulimall-gateway.properties有了此文件可实现同意配置,即可抛弃application.yml,至此,Gateway网关配置完成

-----------------------------------------------------------------------------------2020.7.30

八.前端简介

1.ES6

ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

2.Vue

Vue是一套用于构建用户界面的渐进式JavaScript框架。

1.MVVM思想
  • M:即Model模型,包括数据和一些基本操作
  • V:即View视图,页面渲染结果
  • VM:即View-Model,模型与视图间的双向操作(无需开发人员干涉)
    MVVM中的VM要做的事情就是把DOM封装起来,开发人员不用再关系Model和View之间是如何相互影响的。
2.Vue实例操作

首先创建一个html,利用npm install vue安装vue组件
接下来在html中学习我们的vue
注:因为div id和vue实例下的el进行了绑定,所以写在div id内的东西vue全部可以扫描到
可通过网页控制台vm.num=xx来更新num

1.vue声明式渲染

<body><div id="app"><h1>{{name}},handsome!</h1></div id="app"><script src="./node_modules/vue/dist/vue.js"></script><script>let vm=new Vue({//el: ‘#app‘表示该Vue实例将挂载到<div id="app">...</div>这个元素上el:"#app",data:{name:"zhangsan"}});</script>
</body>

2.双向绑定:模型变化,视图变化
v-model会与下面data元素进行绑定,input框中输入内容,num会实时更新;
也可通过网页控制台vm.num=xx来更新num

<body><div id="app"><input type="text" v-modal="num"><h1>{{name}},handsome!there are {{num}}people love her!</h1></div id="app"><script src="./node_modules/vue/dist/vue.js"></script><script>let vm=new Vue({//el: ‘#app‘表示该Vue实例将挂载到<div id="app">...</div>这个元素上       el:"#app",data:{name:"zhangsan",num:1}});</script>
</body>

3.事件绑定
此处添加了button按钮,给它设置了事件,每点击一次num++。同样可以实现修改num

<body><div id="app"><input type="text" v-modal="num"><button v-on:click="num++">点赞</button><h1>{{name}},handsome!there are {{num}}people love her!</h1></div id="app"><script src="./node_modules/vue/dist/vue.js"></script><script>let vm=new Vue({//el: ‘#app‘表示该Vue实例将挂载到<div id="app">...</div>这个元素上       el:"#app",data:{name:"zhangsan",num:1}});</script>
</body>

八.整合阶段

1.配置网关和路由重组

2.网关统一配置跨域

跨域:指的是浏览器不能执行其他网站的脚本,是浏览器同源策略引起的,是浏览器堆javascript加的安全策略
同源策略:指协议,域名,端口都要一致
跨域流程如下:

从零开始带你实战搭建Spring Cloud Alibaba商城项目相关推荐

  1. 从0到1带大家把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)

    问题描述 平台越做越大到多租户时,经常会遇见一种情况,就是某些用户希望自己的功能是定制化的,有可能是完全的新功能,也有可能压根就是同样的功能但是A和B两个用户的实现前后台展示和逻辑就压根不同 不可能在 ...

  2. 从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(三) (mini-cloud) 搭建认证服务(认证/资源分离版) oauth2.0 (中)

    本文承接上文<从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(三) (mini-cloud) 搭建认证服务(认证/资源分离版) oauth2.0 (上)> ...

  3. 从0到1手把手搭建spring cloud alibaba 微服务大型应用框架(十五) swagger篇 : gateway 集成swagger 与 knife4j实现在线api文档并嵌入到自己项目内

    背景 我们日常开发中基本都是协同开发的,当然极个别的项目整体前后端都是一个人开发的,当多人协作时,尤其是前后端人员协同开发时 必然会面临着前端需要了解后端api接口的情况,两个选择,提前设计好文档,然 ...

  4. 微服务(三) 【手摸手带你搭建Spring Cloud】 Ribbon 什么是负载均衡?spring cloud如何实现负载均衡?ribbon负载均衡有几种策略?Ribbon是什么?

    在上一章,我介绍了springcloud的eureka搭建.我们做了服务注册.最后我们还介绍了一些续约,失效剔除等参数配置.已经不需要再通过手动输入ip去访问服务,而是通过中心只需要通过服务名就可以获 ...

  5. Spring Cloud Alibaba系列之快速开始搭建Nacos环境

    1.前言介绍 前言:本实验介绍如何搭建Spring Cloud Alibaba Nacos的服务端,nacos server是一个服务注册中心也是一个分布式配置中心 2.实验环境准备 实验环境准备 6 ...

  6. 【Spring Cloud Alibaba】(五)Dubbo启动报错?一直重连报错?你值得学习的是排查问题的方法

    系列目录 [Spring Cloud Alibaba](一)微服务介绍 及 Nacos注册中心实战 [Spring Cloud Alibaba](二)微服务调用组件Feign原理+实战 [Spring ...

  7. Spring Cloud Alibaba 发布第一个正式版本,顺利完成孵化!

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 相信大家对上周的 <来自 Spring Cloud 官方的消息,Spring Clou ...

  8. Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合

    https://www.cnblogs.com/babycomeon/p/11546737.html Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合 ...

  9. Spring Cloud Alibaba基础入门,一周学会基操!

    Spring Cloud Alibaba基础入门,一周学会基操! 服务拆分: 1.不同微服务,不要重复开发相同业务 2.微服务数据独立,不要访问其它微服务的数据库 3.微服务可以将自己的业务暴露为接口 ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色调色板配置)实战
  2. 2020年度“中国神经科学重大进展”获奖名单【附成果介绍】
  3. mysql 快速入门_MySql快速入门
  4. 腾讯测试鸿蒙系统,爆料:荣耀 30 Pro已开始测试华为鸿蒙系统
  5. 学会了Python之后,我的职业生涯突飞猛进
  6. Java 7:项目代币中的代码示例
  7. 小学数学加减法测试软件,儿童数学加法运算火箭(测试版)
  8. Ubuntu 16.04查看软件安装位置
  9. bootstrap模态框垂直居中显示
  10. 浅析ReentrantLock重入锁
  11. 机器学习代码实战——拆分训练集与测试集(train_test_split)
  12. DOM Element对象 参考手册
  13. servlet request返回上下文路径的方法
  14. (最新版2020)Java环境变量配置
  15. 大数据Hadoop相关概念及其技术生态圈
  16. Windows7安装IIS服务器
  17. 管理与发展模式才是联想的症结
  18. 关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM
  19. TSC打印机使用教程终极版
  20. 「凹凸数据」历史文章合集,更新中

热门文章

  1. 南京市秦淮区人大常委会副主任刘明来一行到访云创参观考察
  2. centos7手动分区
  3. 滴滴顺风车设计总结(原创文章)
  4. c语言 高字节和高字节运算 低字节和低字节运算,C语言关系运算符和位运算符.ppt...
  5. LGD将在SID展示下一代曲面OLED面板
  6. C语言咪咪数学宝涉及到的知识点,C语言编程 做一个设计一个儿童算数教学程序:“咪咪数学宝”...
  7. 测试联通网速的用哪个软件,测试网速联通的怎么测?有什么方法?
  8. 黄金时代 —— 深度学习 (基础)
  9. 计算机3十2院校排名,杭州3十2学校排名
  10. 漏洞复现-永恒之蓝(MS17-010)