SpringCloud(一)

一.微服务架构

1.微服务是一种架构风格,没有准确的定义

        简单来说,微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署,这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术

    1.	All in One -> 微服务架构
        将一个完整的项目,一般是根据业务模块拆分成多个项目,并且运行在一个独立的tomcat或其他容器中

    2.	每一个独立的容器都需要相互通讯
        基于HTTP的RestFul方式	   : spring cloud
        基于RPC方式					: Dubbo

    3.	服务之间是需要一个统一的管理
        dubbo: zookeeper
        springcloud: eureka

    4.可以采用不同的语言开发
        springcloud采用基于HTTP的restful方式

    5.甚至每一个独立的服务都可以有一个自己的独立的数据库
    
2.微服务
	从单一项目中拆分出来的某一个模块就成为一个微服务
	
3.springcloud
	微服务架构落地实现的技术栈,大多数都是基于国外的Netflix公司的技术实现
	springcloud让微服务架构的实现变得更简单

二.介绍SpringCloud

1.微服务是一种架构风格,没有准确的定义

        简单来说,微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署,这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术

    1.	All in One -> 微服务架构
        将一个完整的项目,一般是根据业务模块拆分成多个项目,并且运行在一个独立的tomcat或其他容器中

    2.	每一个独立的容器都需要相互通讯
        基于HTTP的RestFul方式	   : spring cloud
        基于RPC方式					: Dubbo

    3.	服务之间是需要一个统一的管理
        dubbo: zookeeper
        springcloud: eureka

    4.可以采用不同的语言开发
        springcloud采用基于HTTP的restful方式

    5.甚至每一个独立的服务都可以有一个自己的独立的数据库
    
2.微服务
	从单一项目中拆分出来的某一个模块就成为一个微服务
	
3.springcloud
	微服务架构落地实现的技术栈,大多数都是基于国外的Netflix公司的技术实现
	springcloud让微服务架构的实现变得更简单

三.微服务场景模拟

首先我们需要模拟一个服务调用的场景。方便后面学习微服务架构

1.1.服务提供者

新建一个项目,对外提供查询用户的服务
1.创建服务者工程
在这里插入图片描述
2.导入依赖

<!--下面导入数据库的使用的包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

3.编写代码
实体类:

@Data
public class User implements Serializable {
    private static final long serialVersionUID = -1799135712388434175L;
    private int id;
    private String username;
    private String password;
    private int age;
    private int sex;
    private String birthday;
    private String created;
    private String updated;
    private String note;
}

controller

@RestController
public class UserController {

    @Autowired
    private IUserService userService;

    @RequestMapping("/list")
    public List<User> getList(){
        return userService.queryUsers();
    }
}

service接口

public interface IUserService {
    List<User> queryUsers();
}

实现类

@Service
public class UserService implements IUserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> queryUsers() {
        return userMapper.queryUsers();
    }
}

mapper接口

@Mapper
public interface UserMapper {
    List<User> queryUsers();
}

mapper映射文件这里就没写了,里面只需写个简单的sql
yml配置文件

server:
  port: 8181
mybatis:
  type-aliases-package: com.qf.pojo
  mapper-locations: classpath:mapper/*.xml
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///nz1904-sbc-01
    username: root
    password: 123

启动项目,访问并测试
在这里插入图片描述

1.2.服务调用者

和上面的一样,先创建个工程,这里只需订阅服务,所有就简单多了

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.9.0</version>
        </dependency>

config配置

@SpringBootConfiguration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate(new OkHttp3ClientHttpRequestFactory());
    }
}

controller

@RestController
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/test")
    public List<User> consumerTest(){
    	//url:协议 ip 端口 请求
        String url = "http://127.0.0.1:8181/list";
        return this.restTemplate.getForObject(url,List.class);
    }
}

启动并测试订阅服务能否成功
localhost:8080/test
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值