微服务环境搭建SpringCloud

                        微服务环境搭建SpringCloud

1.什么是单体应用:

  单体应用项目中的资源都在一个应用中,打包成一个war包,用一个tomcat启动的服务就是单体应用

   单体应用的好处:

      (1)小的项目性能比微服务的性能高

      (2)集成快,适合数据量小的项目,比如内部自己用的项目

   单体应用的坏处:

      (1)一个模块挂了,整个项目都受影响

      (2)单个tomcat更能处理的并发有限,可以做集群,但是不方便局部(某一个模块)扩展

      (3)维护/开发/升级比较麻烦

      (4)代码臃肿,编译,打包都比较慢

      (5)技术选型单一

      (6)数据库选型单一

  

2.什么是微服务:

  微服务就是把一个大的系统拆分成多个小的服务,每个服务只专注自己的一个业务,每个服务有各自的进程
     微服务之间使用的网络通信协议进行数据交换的(通常是基于HTTP的RESTful API)
3.微服务的远程调用方式:

  1.RPC

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

  2.Http

    (1).Http:http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议。也可以用来进行远程服务调用。缺点是消息封装臃肿。

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

4.认识RPC

  RPC,即 Remote Procedure Call(远程过程调用),是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。说得通俗一点就是:A计算机提供一个服务,B计算机可以像调用本地服务那样调用A计算机的服务。

5.RPC调用流程图  

6.认识Http

  Http协议:超文本传输协议,是一种应用层协议。规定了网络传输的请求格式、响应格式、资源定位和操作的方式等。但是底层采用什么网络传输协议,并没有规定,不过现在都是采用TCP协议作为底层传输协议。说到这里,大家可能觉得,HttpRPC的远程调用非常像,都是按照某种规定好的数据格式进行网络通信,有请求,有响应。没错,在这点来看,两者非常相似,但是还是有一些细微差别。

- RPC并没有规定数据传输格式,这个格式可以任意指定,不同的RPC协议,数据格式不一定相同。

- Http中还定义了资源定位的路径,RPC中并不需要

7.单体应用和微服务的比较图

 8.微服务的特点

  • 数据库选型多样化

  • 技术选型多样化

  • 每个微服务专注一个业务

  • 每个维护有自己的进程

  • 微服务之间通过网络协议进行通信

  • 方便做局部拓展

  • 开发/维护/升级更方便

9.微服务的缺点

  • 成本高

  • 技术要求比较高

  • 部署麻烦

10Springcloud入门环境的搭建

  1.搭建注册中心

//创建多模块maven工程
springcloud-parent
  springcloud-eureka-server-1000 //注册中心EurekaServer 
  springcloud-order-server-3000  //订单服务EurekaClient ,消费者
  springcloud-user-server-2000   //用户服务EurekaClient ,提供者

  2.父工程导入依赖

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
    </parent>


    <groupId>cn.itsource</groupId>
    <artifactId>dpringcloudday1</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>springcloud-eureka-server-1000</module>
        <module>springcloud-user-server-2000</module>
        <module>springcloud-order-server-3000</module>
    </modules>


    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>

  3.创建子工程

  

   4.这个子公共就是注册中心创建Springboot配置类

package cn.itsource;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer//开启注册中心
@SpringBootApplication
public class EurekaServerApplication1000 {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication1000.class,args);
    }
}

   5.yml类的配置

server:
  port: 1000

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false   //registerWithEureka是关闭注册服务默认为true因为这个
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://localhost:1000/eureka/

  6.User用户模块加入

package cn.itsource;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//配置类
@SpringBootApplication
public class UserServerApplication2000 {
    public static void main(String[] args) {
        SpringApplication.run(UserServerApplication2000.class);
    }
}

yml配置:
eureka: client: serviceUrl: defaultZone: http:
//localhost:1000/eureka/ #注册中心地址 server: port: 2000

  7.先启动注册模块  端口名为1000然后访问过后再启动其他的子模块

 

 这里表示你有在这个注册页面有多少个实例模块

猜你喜欢

转载自www.cnblogs.com/1999wang/p/11537694.html