精华内容
下载资源
问答
  • 微服务项目部署

    2019-02-25 17:27:27
    微服务项目部署
  • 这是一个入门问题,做微服务项目,首先就是要搭建 Project,代码采用什么样的形式来组织,这是我们面临的第一个问题。在传统的项目中,我们经常需要搭建聚合工程,这样可以方便的对项目进行分模块管理,降低维护难度...
    这是一个入门问题,做微服务项目,首先就是要搭建 Project,代码采用什么样的形式来组织,这是我们面临的第一个问题在传统的项目中,我们经常需要搭建聚合工程,这样可以方便的对项目进行分模块管理,降低维护难度。微服务项目中,我们是否还需要继续这种开发方式呢?今天呢,我就结合自己在项目中的经验和大家简单聊一下,微服务项目中代码的组织形式。

    1.开发模式

    要搞清楚代码如何组织,首先大家要明白微服务架构到底是什么样子!

    在微服务架构中,一个完整的项目被拆分成很多独立的微服务,例如一个电商项目,可能分为商品管理、商家管理、用户管理、交易管理、SEO 管理、App 管理、财务管理、系统管理等很多微服务。

    这些微服务都是一个个独立的项目,由不同的团队负责开发维护。

    不同的团队独立开发、独立维护、独立测试(看情况)、独立上线,这样可以有效提高项目的开发效率。

    结合项目的实际情况,不同的团队甚至可以选择不同的技术栈,比如商品管理模块用 Java、交易管理可能用 Go、门户网站可能用 PHP 等等,从微服务架构上来说,这些都是支持的,这也是微服务的优势之一,即同一系统不必拘泥于同一种语言,当然在具体实践中,还需要结合团队的技术栈以及语言的特性来选择。

    其实看到这里,你大概就明白了,聚合工程在这里还能不能用了!

    2.要不要聚合工程

    首先从整体上来说,也就是整个项目层面,我们不再需要聚合工程了。聚合工程可以让项目统一打包,解决项目中的依赖问题,还可以对依赖的版本进行统一管理,但是这些特性对微服务项目来说,其实并不重要。

    假如商品管理模块用 Java、交易管理用 Go、门户网站用 PHP,那么这三个独立的微服务肯定是没有必要做成一个聚合工程的,你也没法聚合。当然这是一种比较极端的情况,即使不同微服务模块都是使用 Java 语言开发,那也没有必要聚合,因为不同的微服务实际上都是一个个独立运行的项目,由不同的团队开发维护,微服务的一大优势就是各个团队对独立开发,互不影响,如果搞个聚合工程,又把各个团队绑定在一起了。

    但是不同的微服务之间,不可避免的要使用一些公共类库,这些可以统一打包上传到公司 Maven 私服上,然后不同的团队自行依赖即可,或者通过 git subtree 的方式来使用

    这是从大的层面来说。具体到每一个微服务,聚合工程的优势还在,该用还是要用,例如在商品管理模块,聚合工程还是可以继续使用的。

    3.为什么会有疑问

    微服务中用不用聚合工程这个问题,本来是个很小的问题,但是为什么很多小伙伴会有疑问呢?

    我说一下我了解到几种情况。

    一种情况就是公司的微服务是在旧项目的基础上改造的,仓促上马,改来改去,面目全非,已经顾不上架构这些东西了,功能能实现就行了,这种时候甚至在大的层面就使用了聚合工程,结果不同团队开发起来,还是牵一发而动全身,如果有小伙伴也开发过这种项目,可能就会对聚合工程的使用产生疑问。作者有一个朋友在广州做某央企的项目,就是这种情况。

    另一种情况可能是因为公司人少,微服务项目开发为了方便,也就从整体上做成了聚合工程,这样在项目人少并且工程量不大的情况下,修改起来非常方便。

    总之,这个问题实际上也不能一概而论,结合项目的实际情况,选择适合自己的方案才是最好的。

    4b372838f859ab45ca583d9a5daf1a45.png5月31号晚8点,国际资深电商架构师姚半仙,将现场直播《蚂蚁金服金融核心系统分布式事务方案》感兴趣的小伙伴,可以添加琳琳好友,免费获取听课名额。(琳琳微信:mkw-jiagoushi)

    6415369dd64f5dfacd81515158ea9f32.png

    展开全文
  • API和微服务:FreeCodingCamp API和微服务项目
  • 二、搭建微服务项目 创建maven父工程 创建服务提供方 创建服务调用方 一、在微服务中服务调用方式 1、RPC和HTTP 无论是微服务还是SOA,都面临着服务间的远程调用,那么服务间的远程调用...

    目录

     

    一、在微服务中服务调用方式

    1、RPC和HTTP

    2、Spring 的RestTemplate

    RestTemplate简单跨服务测试

     3、SpringCloud

    二、搭建微服务项目

    创建maven父工程

     创建服务提供方

    创建服务调用方 


    一、在微服务中服务调用方式

    1、RPC和HTTP

    无论是微服务还是SOA,都面临着服务间的远程调用,那么服务间的远程调用方式有哪些

    常见的远程调用方式有:

    RPC:Remote Produce Call远程过程调用,类似的还有RMI。自定义数据格式。基于原生TCP通信、速度快、效率高。早期的webservice,现在热门的dubbo,都是RPC的典型代表

    HTTP:http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用http协议,也可以用来进行远程服务调用。缺点是消息封装臃肿,优势是对服务的提供和调用方没有任何技术限定,自由灵活,更符合微服务理念。

    现在热门的rest风格,就可以通过http协议来实现。

     

    例如

    发送一个http请求(包含请求头和请求体)

    localhost:访问的是对应的ip地址主机

    8088:当访问到对应ip地址主机之后,进入到对应的进程端口

    /user/9:请求交给前端控制器DispatcherServlet处理,控制器通过HanderMapping找到相应的Controller组件处理请求,执行Controller组件约定方法处理请求,
    在约定方法调用模型组件完成业务处理。约定方法可以返回一个ModelAndView对象,封装了处理结果数据和视图名称信息,控制器接收ModelAndView之后,调用ViewResolver组件,
    定位View(JSP)并传递数据信息,生成响应页面

    2、Spring 的RestTemplate

    spring 提供了一个RestTemplate模板工具类,对基于http的客户端进行了封装,并且实现了对象与json的序列化和反序列化,非常方便。resttemplate并没有限定http的客户端类型,而是进行了抽象,目前常用的3种都有支持

    HttpClient

    OkHttp

    JDK原生的HttpUrlConnection(默认的)

    RestTemplate简单跨服务测试

    在没有指定RestTemplate的客户端类型,默认使用的是HttpUrlConnection

     拿到的是json数据,RestTemplate在底层将json转换成了对象

     运行

     3、SpringCloud

    微服务是一种结构方式,最终肯定需要技术架构去实现。

    微服务的实现方式很多,但是最火的莫过于spring cloud。

    后台硬:作为spring家族的一员,有整个spring全家桶靠山,背景十分强大。

    技术强:spring作为java领域的前辈,可以说是功力深厚。有强力的技术团队支撑,一般人还真比不起。

    群众基础好:可以说大多数程序员的成长都伴随着spring框架。

    使用方便:想想大家都体会到了springboot给我们开发带来的便利,而spring cloud完全支持springboot的开发,用很少的配置就能完成微服务框架的搭建

     

    二、搭建微服务项目

    在日常工作中我们采用的是创建独立的项目通过远程调用服务来实现各个服务之间的调用,现在我们为了方便起见,采用聚合工程的方式进行搭建。

    创建maven父工程

     需要子项目手动去引入

     创建服务提供方

    创建modul子项目user-service

     添加对应依赖

    配置文件

    创建springboot的启动类

    创建user类

    创建UserMapper接口

    创建UserService类

    创建userController类

     

    启动并访问

    现在服务的提供方就准备好了

    创建服务调用方 

    与上面类似,这里不再赘述,需要注意的是,我们调用user-service的功能,因此不需要mybatis相关依赖。

    创建modul子项目consumer-demo

    添加springboot的自动启动包

    创建springboot启动类,唯一不同之处在于使用了远程服务调用RestTemplate

    创建user类

    创建ConsumerController来实现远程数据库查询的服务调用

    这个时候刷新一下整个maven项目

    点击右下角出现的弹框

     以后就可以直接在这里启动

    展开全文
  • 微服务项目学成在线

    2019-05-17 11:41:28
    微服务项目学成在线,黑马2019年最新项目.开发工具采用的是idea,学习本项目相信大家可以学到很多.
  • 微服务项目的部署

    万次阅读 2019-06-18 08:02:54
    掌握微服务项目与Docker的整合方式 掌握微服务项目的部署方式 项目整合参考:https://blog.csdn.net/qq_37823605/article/details/91379272 练习内容 1、Docker Compose编排工具 1.1、Docker Compose的安装与...

    练习目标

    • 掌握Docker Compose编排工具的使用
    • 掌握微服务项目与Docker的整合方式
    • 掌握微服务项目的部署方式

    项目整合参考:https://blog.csdn.net/qq_37823605/article/details/91379272

    练习内容

    1、Docker Compose编排工具

    1.1、Docker Compose的安装与卸载

    1.1.1、安装条件

    Docker Compose是依赖于Docker引擎的,所以在安装Docker Compose之前要确保机器上已经安装了Docker

    1.1.2、安装Compose

    a)、使用curl命令从GitHub的Compose仓库拉取Docker Compose,具体指令如下:

    $sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    

    b)、更改Docker Compose的可执行文件权限,具体操作命令如下:

    $sudo chmod +x /usr/local/bin/docker-compose
    $docker-compose --version

    1.1.3、Compose的卸载操作,命令如下:

    $sudo rm /usr/local/bin/docker-compose

    1.2、Composefile文件的使用说明

    Dooker Compose编排工具的使用非常简单,只需要如下三步。

          (1)编写Dookerfile文件。使用Dockerfile定义应用程序的环境,这样可以在任何地方使用它,Dookefile 的作用就是为每个服务构建镜像。

          (2)定义yml文件(通常是docker- compose.yml)。 就是将前面介绍的服务部署指令及相关参数都统一在该文件中编写和配置,这样就省去了针对不同服务各自运行的麻烦。

          (3)运行服务部署指令。根据具体的部署需求,来执行相应的部署指令,Docker 会读即dooker- composeyml文件内容启动整个应用服务。

          在上述三步中,第一步中Dockerfile文件的编写已经在第7章有过讲解,而第三步的服务部署指令会在后面服务部署环节进行说明,所以现在需要掌握的就是如何编写docker-composeym文件。接下来,将针对Compose file文件的定义和配置进行详细讲解。

          这里先通过一个Compose file 文件的示例来进行展示说明,具体内容如下所示。
     

    version: "3"
    services:
      mysql:
        image: mysql:5.6
        restart: on-failure
        ports:
          - 3306:3306
        volumes:
          - microservice-mysql:/var/lib/mysql
        networks:
          - microservice-net
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: microservice_mallmanagement
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
          placement:
            constraints: [node.role == manager]
    
      eureka-server:
        image: 192.168.159.143:5000/microservice-eureka-server:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 8761:8761
        networks:
          - microservice-net
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
    
      gateway-zuul:
        image: 192.168.159.143:5000/microservice-gateway-zuul:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 8050:8050
        networks:
          - microservice-net
        depends_on:
          - eureka-server
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
          placement:
            constraints: [node.role == manager]
    
      order-service:
        image: 192.168.159.143:5000/microservice-orderservice:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 7900:7900
        networks:
          - microservice-net
        depends_on:
          - mysql
          - eureka-server
        deploy:
          replicas: 2
          restart_policy:
            condition: on-failure
    
      user-service:
        image: 192.168.159.143:5000/microservice-userservice:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 8030:8030
        networks:
          - microservice-net
        depends_on:
          - mysql
          - eureka-server
        deploy:
          replicas: 2
          restart_policy:
            condition: on-failure
    
      visualizer:
        image: dockersamples/visualizer:stable
        ports:
          - 8081:8080
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        deploy:
          placement:
            constraints: [node.role == manager]
        networks:
          - microservice-net
    
    networks:
      microservice-net:
    volumes:
      microservice-mysql:
    

    2、微服务于Docker的整合

    2.1、添加Dockerfile文件

          在Docker中,应用都是部署在容器中的,而容器又由镜像生成,镜像则通常是通过Dockerfile文件构建的,所以微服务与Docker整合的第一步就是 要提供Dockerile文件。

          在上一个项目整合中讲解整合时编写的微服务项目microservice- -mallmanagement主要有4个子项目模块(包括2个微服务模块和2个辅助服务模块),我们需要针对每一个子项目模块编写对应的Dockerfile文件。这里以用户订单管理微服务模块为例,所编写的Dockerfile文件的具体内容如下所示。

    FROM java:8-jre
    MAINTAINER shirx <shirx@qq.com>
    
    ADD ./target/microservice-orderservice-0.0.1-SNAPSHOT.jar /app/microservice-orderservice.jar
    CMD ["java", "-Xmx200m", "-jar", "/app/microservice-orderservice.jar"]
    
    EXPOSE 7900

    2.2、添加dockerfile-maven插件

          Dockerfile文件编写完成后,就可以使用Docker的框关指令构建镜靠并运行容器。然后流问容器中的应用了。只是上述所有的操作都是手动完成的,如果需要部署多个服务。将会丰常项

          针对这种情况MAVEN提供了一个dackerfile -maven-plugin插件,很好地支持了与Docker的整合。该插件的使用非常简单,只需要在所有需要生成Docker容器项目的pom文件中添加该插件,并进行一些相关配置即可,其具体使用示例如下。

    <build>
    		<plugins>
    			<!-- dockerfile plugin -->
    			<plugin>
    				<groupId>com.spotify</groupId>
    				<artifactId>dockerfile-maven-plugin</artifactId>
    				<version>1.3.6</version>
    				<configuration>
    					<!-- 生成的镜像仓库名称 -->
    					<repository>${docker.image.prefix}/${project.artifactId}</repository>
    					<!-- 生成的镜像版本 -->
    					<tag>${project.version}</tag>
    					<!-- 推送到私有镜像仓库时需要开启安全认证 -->
    					<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
    				</configuration>
    				<!-- 直接使用mvn install命令打包项目,就会自动构建镜像和推送镜像 -->
    				<executions>
    					<execution>
    						<id>default</id>
    						<phase>install</phase>
    						<goals>
    							<goal>build</goal>
    							<goal>push</goal>
    						</goals>
    					</execution>
    				</executions>
    			</plugin>
    		</plugins>
    	</build>

    2.3、添加docker-compose.yml编排文件

          对于个别项目,可以直接通过Docker run等指令启动容器服务,但对于多个项目服务来有必要通过Docker compose编排工具运行服务。
          接下来,就为microservice-mallmanagement添加一个docker-composeyml编排文件以便后续使用Docker compose编排工具,具体如文件所示

    version: "3"
    services:
      mysql:
        image: mysql:5.6
        restart: on-failure
        ports:
          - 3306:3306
        volumes:
          - microservice-mysql:/var/lib/mysql
        networks:
          - microservice-net
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: microservice_mallmanagement
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
          placement:
            constraints: [node.role == manager]
    
      eureka-server:
        image: 192.168.159.143:5000/microservice-eureka-server:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 8761:8761
        networks:
          - microservice-net
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
    
      gateway-zuul:
        image: 192.168.159.143:5000/microservice-gateway-zuul:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 8050:8050
        networks:
          - microservice-net
        depends_on:
          - eureka-server
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
          placement:
            constraints: [node.role == manager]
    
      order-service:
        image: 192.168.159.143:5000/microservice-orderservice:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 7900:7900
        networks:
          - microservice-net
        depends_on:
          - mysql
          - eureka-server
        deploy:
          replicas: 2
          restart_policy:
            condition: on-failure
    
      user-service:
        image: 192.168.159.143:5000/microservice-userservice:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 8030:8030
        networks:
          - microservice-net
        depends_on:
          - mysql
          - eureka-server
        deploy:
          replicas: 2
          restart_policy:
            condition: on-failure
    
      visualizer:
        image: dockersamples/visualizer:stable
        ports:
          - 8081:8080
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        deploy:
          placement:
            constraints: [node.role == manager]
        networks:
          - microservice-net
    
    networks:
      microservice-net:
    volumes:
      microservice-mysql:
    

    3、环境搭建及镜像准备

    3.1、搭建Docker主机

    3.2、安装应用编译工具JDK

    3.3、安装应用打包工具Maven

    3.3.1、下载Linux版本的Maven工具包,并解压:下载地址http://maven.apache.org/download.cgi


    3.3.2、将解压包移动到自定义目录下(这里将解压包直接移动到了opt目录下)

    3.3.3、配置Maven环境变量。修改/etc/profile文件,

    #set maven envirment
    export M2_HOME=/opt/apache-maven-3.6.1/
    export M2=$M2_HOME/bin
    export MAVEN_OPTS="-Xms256m -Xmx512m"
    export PATH=$M2:$PATH

    3.4、镜像准备

    由于之前3小节中dockerfile -maven的配置,在完成打包后也会自动构建镜像并推送到指定仓库,但无论是推送到Docker Hub还是本地私有镜像仓库,必须先登录认证才可进行推送。所以为了能够自动打包、构建镜像和推送镜像,在使用mvn install 命令打包之前,除了需要预先在dockerfile -maven插件配置中配置<useMavenSettingsForAuth>标签属性值为true外,还需要在Maven的settings.xml 配置文件(参考上一小节基础环境搭建时Maven的安装位置,此示例中的地址为/opt/apache -maven-3.5.0/confsettings.xml )中配置服务认证信息,具体配置内容如下( 注意要配置在<servers>标签内)。

    <id>192.168.159.143:5000</id>
            <username>yxk</username>
            <password>123</password>

            配置完成后,就可以将微服务项目microservice-malimanagement复制到manager1 服务主机的某个工作目录下,并进入到该项目pom文件所在位置(最外层的pom文件目录),然后使用mvn install 指令进行打包(首次打包会进行pom依赖文件的下载,所以需要一定的时间)。

          执行完mvn install指令后的效果如下图所示。

          如果出现如上图所示的“BUILD SUCCESS"信息,就表示打包、镜像构建和推送成功。如果某个过程执行失败,也可以从终端页面查看错误信息。

          当确定全部执行成功后,我们还可以实际确认。先通过docker images指令查看镜像列表中是否有生成的指定镜像,然后再次进入本地私有镜像仓库配置的挂载目录/mntregistry/docker/rogistryN2/repositories进行确认,查看生成的镜像是否也推送到了本地仓库。

    4、微服务的手动部署

    4.1、集群服务中的网卡选择性注册

    4.1.1、使用如下命令查看集群搭建后的网络列表详情。

    docker network ls

         从上图可以看出,当集群环境搭建完成后,会默认增加名为docker. gwbridge 和ingress的网络。其中ingress是集群环境下所有服务默认的网络管理方式,它主要用于在不同集群节点之间实现同一个服务的负载均衡,并且会默认为所有集群服务分配一个子网进行管理,而我们搭建微服务时,会根据需求自定义以overlay为驱动的网络用于多服务之间的通信管理。

          这样,在搭建的集群环境下,就会出现多网卡网络管理的情况。由于它们分别对应不同的业务管理,所以可能会使得注册到Eureka中的服务地址有偏差,从而导致服务之间的通信失败,以及API网关代理的通信失败问题。

          针对这个可能出现的问题,我们需要将自定义的网络,选择性地注册到Eureka注册中心上,具体的实现过程如下。

    4.1.2、根据微服务项目的需求,在集群环境下预先自定义一 个以overlay为驱动的网络进行本地集群服务网络管理,具体操作指令如下。
     

    docker network create -d overlay --subnet 10.0.0.0/24 microservice_net

           执行上述指令后,会创建一个以overlay为驱动,名为microservice-net的网络,并且通过-- subnet参数指定该自定义网络的子网地址以10.0开头。

    4.1.3、在所有需要注册到Eureka 注册中心的服务(包括microservice-gateway - zuul、microservice-orderservice和microservice-userservice服务)的配置文件application.yml中,添加指定注册到Eureka中心的优选服务子网地址信息,具体内容如下。

    spring:
       cloud:
          inetutils:
            preferred-networks:
            - 10.0   # 设置注册到Eureka中心的优选服务地址

          上述配置中,首先使用preferred-networks设置了该服务优选的网段以10.0开头,这与上面自定义的子网地址属于同一个网段;然后设置了prefer-ip-address属性值为true,表示优选通过IP地址找到对应的服务名称。

    4.1.4、修改服务部署的编排文件docker-compose.yml,将所有服务启动时的网络设置为前面预先自定义的microservice_ net 网络来进行网络管理,将修改后的编排文件重命名为docker-compose - swarm.yml,如下所示。

    version: "3"
    services:
      mysql:
        image: mysql:5.6
        restart: on-failure
        ports:
          - 3306:3306
        volumes:
          - microservice-mysql:/var/lib/mysql
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: microservice_mallmanagement
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
          placement:
            constraints: [node.role == manager]
    
      eureka-server:
        image: 192.168.159.143:5000/microservice-eureka-server:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 8761:8761
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
    
      gateway-zuul:
        image: 192.168.159.143:5000/microservice-gateway-zuul:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 8050:8050
        depends_on:
          - eureka-server
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
          placement:
            constraints: [node.role == manager]
    
      order-service:
        image: 192.168.159.143:5000/microservice-orderservice:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 7900:7900
        depends_on:
          - mysql
          - eureka-server
        deploy:
          replicas: 2
          restart_policy:
            condition: on-failure
    
      user-service:
        image: 192.168.159.143:5000/microservice-userservice:0.0.1-SNAPSHOT
        restart: on-failure
        ports:
          - 8030:8030
        depends_on:
          - mysql
          - eureka-server
        deploy:
          replicas: 2
          restart_policy:
            condition: on-failure
    
      visualizer:
        image: dockersamples/visualizer:stable
        ports:
          - 8081:8080
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        deploy:
          placement:
            constraints: [node.role == manager]
    
    networks:
      default:
        external:
          name: microservice_net
    volumes:
      microservice-mysql:
    

    5、集群服务部署

    5.1、登录私有仓库

    docker login 192.168.159.143:5000

    5.2、部署服务

    注:进入为服务项目中docker-compose-swarm.yml文件所在目录下,使用docker stack deploy部署服务,具体操作如下

    docker stack deploy \
    > -c docker-compose-swarm.yml \
    > --with-registry-auth \
    > mallmanagement

    5.3、查看服务列表详情

    docker service ls

     

    5.4、在集群管理节点上,使用docker stack 的相关指令查看整个微服务项目在集群节点的分配与启动情况,

    docker stack ps mallmanagement

    5.5、上述指令中,docker stack ps用于查看整个微服务项目在集群节点的分配与启动情况,其中的mallmanagement就是在部署集群服务时指定的服务名称。

          另外,由于在集群环境下部署服务是在后台启动的,所以在Docker客户端无法查看各个服务的启动详情。这里可以在集群管理节点上通过Docker service提供的服务日志指令来进一步查看某个具体服务从启动到运行的整个日志情况,具体操作指令如下。

    docker service logs -f mallmanagement_oder-service

     

    6、微服务测试

    6.1、通过visuallizer集群服务可视化工具查看服务启动情况。微服务项目部署成功后,可以通过地址http://192.168.159.143:8081/(注意这是我的项目中manager1的主机地址,读者测试时要使用自己的主机地址)查看集群服务可视化工具visualizer 界面的显示情况,效果如图所示。

    6.2、通过Eureka注册中心查看服务的启动情况。我们还可以通过地址Http://192.168.159.143:8761/访问服务注册中心的情况。

    6.3、将数据库数据初始化。此项目中MySQL数据库是使用Docker容器构建的,所以对MySQL数据库服务上,具体操作如下。

    sudo apt install mysql-client-core-5.7

         

           执行上述指令后,就会在当前Docker 机器上安装一一个版本为5.7的MySQL客户端(这是使用当前Ubuntu下自带的安装包进行安装的),通过该客户端我们就可以连接到刚才启动的MySQL数据库服务上,具体操作指令如下。

    $ mysql -h 127.0.0.1 -uroot -P
    

           执行上述指令并连接成功后,就可以参考第9章中的9.1.3 小节对数据库microservice_mallmanagement中的表和数据进行初始化了。

          当然我们也可以不用在Docker机器上安装MySQL客户端来连接数据库进行数据操作,通过MySQL客户端连接工具(如Navicat )连接到启动的MySQL数据库的服务地址也可以进行数据库数据的初始化操作。

    6.4、测试微服务。

    分别连接用户管理微服务和订单管理微服务的访问地址进行测试,具体地址分别为htp:/:/192. 168.197.143:8030/swagger-ui.html和htp://192.168.197.143:7900/swagger-ui.html (读者需要根据自己项目的服务地址进行访问)。此时测试方式同https://blog.csdn.net/qq_37823605/article/details/91379272 中的Swagger-U效果测试完全一样。

    6.5、测试验证API网关服务。

    订单微服务接 口调用方法为http://192.168.159.143:7900/order-service/order/findOrders/1,而用户微服务接口调用方法为http://192.168.159.143:8050/order-service/order/findOrders/shitou,当使用Zuul 网关代理服务后,这两个微服务接口调用方法则分别更改为http://192.168.159.143:8050/order-service/order/findOrders/1和http://192.168.159.143:8050/order-service/order/findOrders/shitou(此时通过API网关访问其他所有的微服务时,访问者只会看到访问的是同一一个服务地址下的内容)。

     

    7、使用Jenkuns自动部署微服务

    7.1、Jenkins安装

    7.1.1、下载Jenkins。官网地址:https://jenkins.io/download/

    7.1.2、启动Jenkins服务

    java -jar jenkins.war --httpPort=49001

    7.1.3、Jenkins初始化安装。

    a)初始化认证密码

    b)初始化插件安装

    c)创建管理员用户

     

     

     

    7.2、Jenkins集成插件配置

    7.2.1、安装Maven插件

    7.2.2、系统全局插件配置

     

    7.3、服务自动化部署

    7.3.1、构建新任务

    7.3.2、配置源码仓库地址  https://github.com/Datacloudeyeshot/docker.git

    7.3.3、构建触发器

     

    7.3.4、服务发布配置

    7.4、自动化部署服务

    7.4.1、选择Console Output查看输出信息

    7.4.2、输出信息页面

    7.4.3、控制台信息提示

     

    总结:

    1、集群部署过程中,创建网络检查网段是否冲突;

    2、项目打包mvn install 时注意给项目包一定的执行权;

    3、切换管理员用户时,注意source一下环境变量,使maven和java的环境变量生效;

    4、在install过程中注意网络的连通性。

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 文章目录一:微服务项目整合1:微服务项目结构预览2:微服务项目功能介绍3:微服务项目的启动和测试二:接口可视化工具---Swaager-UI1:Swagger-UI使用方法2:Swagger-UI使用测试 一:微服务项目整合 1:微服务项目...

    一:微服务项目整合

    1:微服务项目结构预览

    本项目模拟的是一个简单的商城管理系统,其项目整体结构如下:
    本项目通过一个名为microservice-mallmanagement的maven父项目构建了四个子项目

    microservice-eureka-server:用于服务注册发现
    microservice-gateway-zuul:用于API网关
    microservice-orderservice:用于订单管理服务
    microservice-userservice:用于用户管理服务
    在这里插入图片描述

    2:微服务项目功能介绍

    (1):microservice-eureka-server(Eureka注册中心)
    该子项目使用了Spring Cloud的组件Eureka,主要用于搭建一个服务注册中心,microservice-gataway-zuul,microservice-orderservice和microservice-userservice都将通过配置注册到该注册中心。
    其对应的配置文件application.yml的具体内容

    在这里插入图片描述
    (2):microservice-gataway-zuul(zuul API网关)
    该子项目使用了Spring Cloud的组件zuul, 主要作为其他微服务项目的API网关,来实现其他微服务接口的动态代理。microservice-orderservice和microservice-userservice微服务都可以使用zuul网关服务进行代理请求。其对应的配置文件application.yml的具体内容:
    在这里插入图片描述在这里插入图片描述(3):microservice-orderservice(订单管理微服务)
    该子项目就是一个使用传统的spring Boot框架开发的订单管理微服务项目,主要用于进行商城订单管理,并提供有关订单管理的restful风格的API接口方法
    其对应的配置文件application.yml的具体内容
    在这里插入图片描述该项目对应的控制类OrderController的具体内容
    在这里插入图片描述(4):microservice-userservice(用户管理微服务)
    该项目也是一个传统的spring Boot框架开发的用户管理微服务项目,主要用于进行商城用户管理,并提供有关用户管理的restful风格的API接口方法
    其对应的配置文件application.yml的具体内容
    在这里插入图片描述该项目对应的控制器类UserController的具体内容
    在这里插入图片描述

    3:微服务项目的启动和测试

    通过MySql客户端连接工具执行SQL脚本文件来初始化数据库和表,SQL脚本
    在这里插入图片描述在这里插入图片描述完成全部子项目的启动并运行成功后,通过地址http://localhost:8761/,即可访问Eureka服务注册中心
    在这里插入图片描述启动成功后,即可对系统的功能进行测试,具体执行步骤如下:
    (1):测试接口方法。
    在这里插入图片描述在这里插入图片描述
    (2):测试API网关服务
    在这里插入图片描述在这里插入图片描述

    二:接口可视化工具—Swaager-UI

    1:Swagger-UI使用方法

    (1):下载Swagger-UI项目
    从GitHub上拉取Swaager-UI项目代码
    https://github.com/swaager-api/swagger-ui.git
    (2):引入Swagger-UI

    在这里插入图片描述(3):加入Swagger依赖
    在这里插入图片描述(4):编写配置类
    在这里插入图片描述

    2:Swagger-UI使用测试

    分别完成微服务项目microservice-userservice和microservice-orderservice与Swagger-UI接口文档工具的整合后,只需要重新启动项目即可查看整合效果

    (1):整合测试
    重新启动所有整合了Swagger-UI接口文档工具的微服务项目,启动成功后,通过对应的请求路径即可进入测试页面
    在这里插入图片描述
    在这里插入图片描述
    (2):接口测试
    以用户管理API接口测试文档为例,先单击user-controller面板,会展示出接口中的所有方法(项目只有一个GET方法),再单击某个具体的方法会展现出详细信息

    在这里插入图片描述在这里插入图片描述

    三: 注意的问题

    1:yml文件的格式与内容的正确书写
    2:在连接数据库时要正确的写入个人的连接信息

    在这里插入图片描述
    3:启动顺序

    展开全文
  • 微服务项目结构包括:Eureka注册中心、Zuul API网关、订单管理微服务和用户管理微服务,并进行启动测试;还可利用接口可视化工具---Swagger-UI,实现整合测试和...该微服务项目其中包括Maven工程项目和对应的数据库。
  • 内涵 qianku 前端微服务项目 以及vue 和react子项目 源码 本人学习记录 代码注释详细 需要的小伙伴可以欢迎下载
  • SpringBoot微服务项目打包流程

    千次阅读 多人点赞 2019-09-29 14:48:34
    SpringBoot微服务项目打包流程 前言: 这里所谓的微服务打包是Maven项目多模块如何进行打包。即多个模块按其各自的功能分割出来,又相互依赖的情况下进行打包部署。近日在学微服务项目,进行打包时,在网上搜过了...
  • Spring Cloud微服务项目实战教程 Spring Cloud微服务项目实战教程 Spring Cloud微服务项目实战教程 下载地址:百度网盘
  • 微服务项目整合与测试 微服务项目整合 1. 微服务项目结构预览 2. 微服务项目功能介绍 microservice-eureka-server(Eurka注册中心) 该子项目使用了Spring Cloud的组件Eureka,用于搭建一个服务注册中心、...
  • 掌握微服务项目的整合使用 掌握Swagger-UI的简单使用 1、微服务项目整合 1.1 微服务项目预览 1.1.1 在https://github.com/shi469391tou/microservice-mallmanagement.git地址下载,并导入eclipse 1.1.2 查看项目...
  • 微服务项目部署在docker容器运行

    千次阅读 2019-10-20 14:00:31
    昨天的一篇微服务项目中涉及到docker部署,今天写一篇关于微服务项目部署在docker容器中运行,使用github上另外一个比较经典的微服务项目piggyMetric,项目的github地址:https://github.com/sqshq/piggymetrics,这...
  • 开源微服务项目介绍

    2020-08-13 19:27:48
    最近逛GitHub 发现一个不错的开源微服务项目(下载地址:https://github.com/yangzongzhuan/RuoYi-Cloud.git),项目有很多可以学习的地方,用了比较主流的技术。想运行项目需要掌握微服务一些相关技术。下面介绍项目...
  • 最近逛GitHub 发现一个不错的开源微服务项目(下载地址:https://github.com/yangzongzhuan/RuoYi-Cloud.git),项目有很多可以学习的地方,用了比较主流的技术。想运行项目需要掌握微服务一些相关技术。下面介绍项目...
  • 黑马java微服务项目乐优商城全套网盘链接。 黑马java微服务项目乐优商城全套网盘链接。 乐优商城的英文一个全品类的电商购物网站(B2C)。 用户可以在线购买商品,加入购物车,下单,商品秒杀 可以品论已社群中心...
  • 资源名称:一步一步学Spring Boot 2微服务项目实战资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • 主要介绍了浅谈Spring Boot 微服务项目的推荐部署方式,具有一定参考价值,需要的朋友可以了解下。
  • 一步一步学Spring Boot 2微服务项目实战,这本书非常不错,目录清晰。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,152
精华内容 10,060
关键字:

微服务项目