随笔:13 文章:7 评论:0 引用:0
凯发k8网页登录-凯发天生赢家一触即发官网 凯发k8网页登录首页
发新文章

zzsuje -凯发k8网页登录

网关
发送请求需要知道商品服务的地址,如果商品服务器有100服务器,1号掉线后,
还得改,所以需要网关动态地管理,他能从注册中心中实时地感知某个服务上
线还是下线。
请求也要加上询问权限,看用户有没有权限访问这个请求,也需要网关。
所以我们使用spring cloud的gateway组件做网关功能。
网关是请求浏览的入口,常用功能包括路由转发权限校验限流控制等。springcloud gateway取代了zuul网关。
三大核心概念:
route: the basic building block of the gateway. it is defined by an id, a 
destination uri, a collection of predicates断言, and a collection of filters. 
a route is matched if the aggregate predicate is true.
发一个请求给网关,网关要将请求路由到指定的服务。
路由有id,
目的地uri,
断言的集合,
匹配了断言就能到达指定位置,
predicate断言:
this is a java 8 function predicate. the input type is a spring 
framework serverwebexchange. this lets you match on anything from the 
http request, such as headers or parameters.就是java里的断言函数,匹配请求里的任何信息,包括请求头等
filter:
these are instances of spring framework gatewayfilter that have been 
constructed with a specific factory. here, you can modify requests and
responses before or after sending the downstream request.
过滤器请求和响应都可以被修改。
客户端发请求给服务端。中间有网关。先交给映射器,如果能处理就交给handler
处理,然后交给一系列filer,然后给指定的服务,再返回回来给客户端。
12.1 创建模块gulimall-gateway

            com.zyn.glmall
            glmall-common
            0.0.1-snapshot
1 在pom.xml引入
版本环境需保持一致
2.1.8.release
greenwich.sr3
2 开启注册服务发现@enablediscoveryclient
@springbootapplication(exclude = {datasourceautoconfiguration.class})
@enablediscoveryclient
public class gulimallgatewayapplication {
    public static void main(string[] args) {
        springapplication.run(gulimallgatewayapplication.class, args);
    }
}
3 配置nacos注册中心地址applicaion.properties
spring.application.name=glmall-gateway
spring.cloud.nacos.discovery.server-addr=192.168.11.1:8848
server.port=88
4 bootstrap.properties 填写配置中心地址
spring.application.name=glmall-coupon
spring.cloud.nacos.config.server-addr=192.168.11.1:8848
spring.cloud.nacos.config.namespace=a791fa0e-cef8-47ee-8f07-5ac5a63ea061
5 nacos里创建命名空间gateway,然后在命名空间里创建文件glmall-gateway.yml
spring:
    application:
        name: glmall-gateway
6 在项目里创建application.yml
spring:
  cloud:
    gateway:
      routes:
        - id: baidu_route
          uri: http://www.baidu.com
          predicates:
            - query=url,baidu

        - id: test_route
          uri: http://www.qq.com
          predicates:
            - query=url,qq
测试 localhost:8080?url=baidu # 跳到百度页面
测试 localhost:8080?url=baidu # 跳到qq页面
posted @ zzsuje 阅读(158) | |  
     摘要: nacos配置中心我们还可以用nacos作为配置中心。配置中心的意思是不在application.properties等文件中配置了,而是放到nacos配置中心公用,这样无需每台机器都改。11.1 引入配置中心依赖,放到common中code highlighting produced by actipro codehighlighter (freeware)http://www.codehigh...  
posted @ zzsuje 阅读(137) | |  
10.0 feign与注册中心
声明式远程调用
feign是一个声明式的http客户端,他的目的就是让远程调用更加简单。
给远程服务发的是http请求。
会员服务(member)调优惠券(coupon)服务
会员服务通过openfeign先去注册中心找优惠券服务
10.1 引入 openfeign 依赖
会员服务想要远程调用优惠券服务,只需要给会员服务里引入openfeign依赖,他就有了远程调用其他服务的能力。

    org.springframework.cloud
    spring-cloud-starter-openfeign

10.2 在coupon服务(被调用服务)中修改如下的内容
@requestmapping("coupon/coupon")
public class couponcontroller {
    @autowired
    private couponservice couponservice;
    @requestmapping("/member/list")
    public r membercoupons(){    //全系统的所有返回都返回r
        
// 应该去数据库查用户对于的优惠券,但这个我们简化了,不去数据库查了,构造了一个优惠券给他返回
        couponentity couponentity = new couponentity();
        couponentity.setcouponname("满100减10");//优惠券的名字
        return r.ok().put("coupons",arrays.aslist(couponentity));
    }
10.3 这样我们准备好了优惠券的调用内容
在member的配置类上加注解@enablefeignclients(basepackages="com.yxj.gulimall.member.feign"),
告诉spring这里面是一个远程调用客户端,member要调用的接口
package com.yxj.gulimall.member;
import org.mybatis.spring.annotation.mapperscan;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.cloud.client.discovery.enablediscoveryclient;
import org.springframework.cloud.openfeign.enablefeignclients;
@springbootapplication
@mapperscan("com.yxj.gulimall.member.dao")
@enablediscoveryclient
@enablefeignclients(basepackages="com.yxj.gulimall.member.feign")
public class gulimallmemberapplication {
    public static void main(string[] args) {
        springapplication.run(gulimallmemberapplication.class, args);
    }
}

10.4
 那么要调用什么东西呢?就是我
们刚才写的优惠券的功能,
复制函数部分,在member的com.yxj.gulimall.member.feign包下新建类:
package com.yxj.gulimall.member.feign;
import com.yxj.common.utils.r;
import org.springframework.cloud.openfeign.feignclient;
import org.springframework.web.bind.annotation.requestmapping;
@feignclient("gulimall-coupon") //告诉spring cloud这个接口是一个远程客户端,要调用coupon服务,再去调用coupon服务/coupon/coupon/member/list对应的方法
public interface couponfeignservice {
    @requestmapping("/coupon/coupon/member/list") 
    public r membercoupons();//得到一个r对象
}
10.5 然后我们在member的控制层写一个测试请求
@restcontroller
@requestmapping("member/member")
public class membercontroller {
    @autowired
    private memberservice memberservice;
    @autowired
    couponfeignservice couponfeignservice;
    @requestmapping("/coupons")
    public r test(){
        memberentity memberentity = new memberentity();
        memberentity.setnickname("张三");
        r membercoupons = couponfeignservice.membercoupons(); //假设张三去数据库查了后返回了张三的优惠券信息
        
// 打印会员和优惠券信息
        return r.ok().put("member",memberentity).put("coupons",membercoupons.get("coupons"));
    }
 
10.6 重新启动服务
http://localhost:8000/member/member/coupons
{"msg":"success","code":0,"coupons":[{"id":null,"coupontype":null,"couponimg":null,"couponname":"满100减10","num":null,"amount":null,"perlimit":null,"minpoint":null,"starttime":null,"endtime":null,"usetype":null,"note":null,"publishcount":null,"usecount":null,"receivecount":null,"enablestarttime":null,"enableendtime":null,"code":null,"memberlevel":null,"publish":null}],"member":{"id":null,"levelid":null,"username":null,"password":null,"nickname":"张三","mobile":null,"email":null,"header":null,"gender":null,"birth":null,"city":null,"job":null,"sign":null,"sourcetype":null,"integration":null,"growth":null,"status":null,"createtime":null}}

10.7 上面内容很重要,我们停留5分钟体会一下
coupon里的r.ok()是什么 # coupon里的控制层就是new了个couponentity然后放到hashmap(r)里而已。
public class r extends hashmap {
    public static r ok() {
        return new r();
    }
    public r put(string key, object value) {
        super.put(key, value);
        return this;
    }
}
posted @ zzsuje 阅读(96) | |  
 
     摘要:   
posted @ zzsuje 阅读(80) | |  
 
     摘要: 1、拉取镜像 1 docker pull nacos/nacos-server ...  
posted @ zzsuje 阅读(99) | |  
逆向工程搭建
7.1 product
git clone https://gitee.com/renrenio/renren-generator.git
下载到桌面后,同样把里面的.git文件删除,然后移动到我们idea项目目录中,同样配置好pom.xml(root)
在common项目中增加module
gulimall-coupon
gulimall-member
gulimall-order
gulimall-product
gulimall-ware
renren-fast
renren-generator
修改renren-generator的application.yml
url: jdbc:mysql://192.168.1.103:3306/gulimall-pms?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghai
username: root
password: root
修改generator.properties
mainpath=com.yxj # 主目录
package=com.yxj.gulimall # 包名
modulename=product   # 模块名
author=yxj  # 作者
email=xxx@qq.com  # email
tableprefix=pms_   # 我们的pms数据库中的表的前缀都有pms,
如果写了表前缀,每一张表对于的javabean就不会添加前缀了
运行renrenapplication。如果启动不成功,修改application中是port为80。访问http://localhost:80
然后点击全部,点击生成代码。下载了压缩包
解压压缩包,把main放到gulimall-product的同级目录下。
在common项目的pom.xml(我们把每个微服务里公共的类和依赖放到common里。)中添加
    com.baomidou
    mybatis-plus-boot-starter
    3.3.2
    org.projectlombok
    lombok
    1.18.8
    org.apache.httpcomponents
    httpcore
    4.4.13
    commons-lang
    commons-lang
    2.6
然后在product项目中的pom.xml中加入下面内容
    com.atguigu.gulimall
    gulimall-common
    0.0.1-snapshot
复制
renren-fast----utils包下的query和pageutils、r、constant复制到common项目的java/com.yxj.common.utils下
把@requirespermissions这些注解掉,因为是shiro的
复制renren-fast中的xss包粘贴到common的java/com.yxj.common目录下。
还复制了exception文件夹,对应的位置关系自己观察一下就行
注释掉product项目下类中的//import org.apache.shiro.authz.annotation.requirespermissions;,他是shiro的东西
注释renren-generator\src\main\resources\template/controller中所有的
# @requirespermissions。
# import org.apache.shiro.authz.annotation.requirespermissions;
总之什么报错就去renren-fast里面找。
测试
测试与整合商品服务里的mybatisplus
在common的pom.xml中导入
    mysql
    mysql-connector-java
    8.0.17
    javax.servlet
    servlet-api
    2.5
    provided  # tomcat有带,所以provided
删掉common里xss/xssfiler和xsshttpservletrequestwrapper
在product项目的resources目录下新建application.yml
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.driver
    url: jdbc:mysql://192.168.1.103:3306/gulimall_pms?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghai
    username: root
    password: root
# mapperscan
# sql映射文件位置
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
然后在主启动类上加上注解@mapperscan()
@mapperscan("com.yxj.gulimall.product.dao")
@springbootapplication
public class gulimallproductapplication {
    public static void main(string[] args) {
        springapplication.run(gulimallproductapplication.class, args);
    }
}
然后去测试,先通过下面方法给数据库添加内容
@springboottest
class gulimallproductapplicationtests {
    @autowired
    brandservice brandservice;
    @test
    void contextloads() {
        brandentity brandentity = new brandentity();
        brandentity.setdescript("hello");
        brandentity.setname("华为");
        brandservice.save(brandentity);
        system.out.println("保存成功");
    }
}
3.12.2 coupon
重新打开generator逆向工程,修改generator.properties
# 主目录 
mainpath=com.yxj
package=com.yxj.gulimall
modulename=coupon
autho=yxj
email=xxx@qq.com
tableprefix=sms_
修改yml数据库信息
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.1.103:3306/gulimall_sms?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghai
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
      logic-delete-value: 1
      logic-not-delete-value: 0
server:
  port: 7000
启动生成renrenapplication.java,运行后去浏览器80端口查看,同样让他一
页全显示后选择全部后生成。生成后解压复制到coupon项目对应目录下。
让coupon也依赖于common,修改pom.xml
    com.atguigu.gulimall
    gulimall-common
    0.0.1-snapshot
resources下src包先删除
添加application.yml
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.1.103:3306/gulimall_sms?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghai
    driver-class-name: com.mysql.cj.jdbc.driver
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
      logic-delete-value: 1
      logic-not-delete-value: 0
运行gulimallcouponapplication.java
http://localhost:8080/coupon/coupon/list
{"msg":"success","code":0,"page":{"totalcount":0,"pagesize":10,"totalpage":0,"currpage":1,"list":[]}}
3.12.3 member
重新使用代码生成器生成ums
模仿上面修改下面两个配置
代码生成器里:
url: jdbc:mysql://192.168.1.103:3306/gulimall_sms?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghai
mainpath=com.yxj 
package=com.yxj.gulimall
modulename=member
author=yxj
email=xxx@qq.com
tableprefix=ums_
重启renrenapplication.java,然后同样去浏览器获取压缩包解压到对应member项目目录
member也导入依赖
    com.atguigu.gulimall
    gulimall-common
    0.0.1-snapshot
同样新建application.yml
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.1.103:3306/gulimall-ums?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghai
    driver-class-name: com.mysql.cj.jdbc.driver
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
      logic-delete-value: 1
      logic-not-delete-value: 0
server:
  port: 8000
order端口是9000,product是10000,ware是11000。
以后比如order系统要复制多份,他的端口计算9001、9002。。。
重启web后,http://localhost:8000/member/growthchangehistory/list
测试成功:{"msg":"success","code":0,"page":{"totalcount":0,"pagesize":10,"totalpage":0,"currpage":1,"list":[]}}
3.12.4 order
修改代码生成器
jdbc:mysql://192.168.1.103:3306/gulimall_oms?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghai
#代码生成器,配置信息
mainpath=com.yxj
package=com.yxj.gulimall
modulename=order
author=yxj
email=xxx@qq.com
tableprefix=oms_
运行renrenapplication.java重新生成后去下载解压放置。
application.yml
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.1.103:3306/gulimall_oms?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghai
    driver-class-name: com.mysql.cj.jdbc.driver
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
      logic-delete-value: 1
      logic-not-delete-value: 0
      
server:
  port: 9000
在pom.xml添加
    com.atguigu.gulimall
    gulimall-common
    0.0.1-snapshot
启动gulimallorderapplication.java
http://localhost:9000/order/order/list
{"msg":"success","code":0,"page":{"totalcount":0,"pagesize":10,"totalpage":0,"currpage":1,"list":[]}}
3.12.5 ware
修改代码生成器
jdbc:mysql://192.168.1.103:3306/gulimall_wms?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghai
#代码生成器,配置信息
mainpath=com.yxj
package=com.yxj.gulimall
modulename=ware
author=yxj
email=xxx@qq.com
tableprefix=wms_
运行renrenapplication.java重新生成后去下载解压放置。
application.yml
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.1.103:3306/gulimall_wms?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghai
    driver-class-name: com.mysql.cj.jdbc.driver
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
      logic-delete-value: 1
      logic-not-delete-value: 0
      
server:
  port: 11000
在pom.xml添加
    com.atguigu.gulimall
    gulimall-common
    0.0.1-snapshot
启动gulimallwareapplication.java
http://localhost:11000/ware/wareinfo/list
{"msg":"success","code":0,"page":{"totalcount":0,"pagesize":10,"totalpage":0,"currpage":1,"list":[]}}
posted @ zzsuje 阅读(109) | |  
6.1 git clone 人人项目

在码云上搜索人人开源,我们使用renren-fast,renren-fast-vue项目。
git clone https://gitee.com/renrenio/renren-fast.git

git clone https://gitee.com/renrenio/renren-fast-vue.git

下载到了桌面,我们把renren-fast移动到我们的项目文件夹(删掉.git文件),而renren-fast-vue是用vscode打开的(后面再弄)

6.2修改配置文件 启动项目
    然后修改项目里renren-fast中的application.yml
    修改application-dev.yml中的数库库的
    url: jdbc:mysql://192.168.1.103:3306/gulimall_admin?useunicode=true&characterencoding=utf-8&servertimezone=asia/shanghai
    username: root password: root
    然后执行java下的renrenapplication
    浏览器输入http://localhost:8080/renren-fast/
    得到{“msg”:“invalid token”,“code”:401}就代表无误

6.3用vscode打开renren-fast-vue
    6.3.1 安装node:
            版本为v10.16.3
            设置node镜像仓库
            npm config set registry http://registry.npm.taobao.org/  # 设置node仓库。提高下载速度

     6.3.2  在终端中输入命令:npm install,安装项目所需依赖。
     6.3.3  安装完成后,输入命令:npm run dev,运行项目。
              浏览器输入localhost:8001 就可以看到内容了,登录账号admin 密码admin
posted @ zzsuje 阅读(131) | |  
 
     摘要: 5.1sql语句code highlighting produced by actipro codehighlighter (freeware)http://www.codehighlighter.com/-->gulimall-oms.sqldrop table if exists oms_order;drop table if&nbs...  
posted @ zzsuje 阅读(53) | |  
 
     摘要: 4.1从gitee上导入项目 idea配置git4.2新建项目成功4.3创建项目微服务商品服务 仓储服务 订单服务 优惠券服务 用户服务共同:1)web,openfeign2)  每一个服务,包名:com.zyn.glmall.xxx(product,order,ware,coupon,member)3)  模块名 glmall-coupon4.3.1拷贝一个pom文件给聚合项...  
posted @ zzsuje 阅读(57) | |  
     摘要: 3.1安装git3.1.1设置自己的git信息进入右键 git bashgit config --global user.name "firstname lastname" (此处name可修改也不是用于登录github的登录名)git config --global user.email "your_email@yourema...  
posted @ zzsuje 阅读(85) | |  
calender
2023年12月
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿

搜索

  •  

最新评论

阅读排行榜

评论排行榜


powered by:
模板提供

网站地图