微服务初步探索<-------AND------->Rest学习环境搭建服务提供者

spring回顾

  • javaSE
    • 数据库
    • Servlet
    • Http
    • Mybatis
    • Spring
    • SpringMVC
    • Ajax,json

三层架构 + MVC
框架:
​ spring IOC AOP
​ springBoot
​ 模块化 all in one
​ 模块化开发 === all in one 代码没变

微服务的四个核心问题?

​ 1.服务很多,客户端怎么访问?
​ 2.这么多服务?服务之间如何通信?
​ 3.这么多服务?如何治理?注册中心
​ 4.服务挂了怎么办?

解决方案:

​ Spring Cloud 生态!就是为了解决上面的四个问题.基于springboot
1.Spring cloud NetFlix 一站式解决方案
​ api网关,zuul组件
​ Feign —httpClinet — http通信方式同步阻塞
​ 服务注册发现:Eureka
​ 熔断机制:Hystrix

2.Apache Dubbo Zookeeper 半自动需要整合别人的
​ API:找第三方组件,或者自己实现
​ Dubbo:基于java的RPC通信框架
​ Zookeeper
​ DUbbo这个方案并不完善

3.Spring cloud Alibaba 最新的一站式解决方案

新概念:服务网格~Server Mesh

​ **什么是微服务?**是一种架构思想,是一种架构模式,架构风格,服务之间可以相互协调,相互配置.

设计模式有23种
​ 总体来说设计模式分为三大类:
​ 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模模式、建造者模式、原型模式。
​ 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式(池化)。
​ 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

什么是Spring Cloud

https://www.springcloud.cc/spring-cloud-netflix.html //Spring Cloud Netflix中文文档
https://www.springcloud.cc/ //Spring Cloud中文文档

好处
spring Cloud特征
​ Spring Cloud专注于为典型的用例和扩展机制(包括其他用例)提供良好的开箱即用体验。

  • Distributed/versioned configuration 分布式/版本化配置
    • Service registration and discovery服务注册和发现
      • Routing 路由
        • Service-to-service calls 服务到服务的调用
        • Load balancing负载均衡
        • Circuit Breakers 断路器
        • Global locks 全局锁
        • Leadership election and cluster state 领导选举和集群状态
        • Distributed messaging 分布式消息传递

项目搭建

Rest学习环境搭建服务提供者
​ 微服务:一个服务对应一个数据库或者同一个信息可能存在不同的数据库
​ 微服务定义模块:模块名称-端口号

SpringCloud-4Rest学习环境搭建服务提供者

项目搭建需要用到的依赖

pom.xml中配置

	        <!-- 热部署工具-->
    		<dependency>
        			<groupId>org.springframework.boot</groupId>
        			<artifactId>spring-boot-devtools</art ifactId>
    		</dependency>

	格式:

	打包方式:<packaging>pom</packaging>
	统一管理版本号:
			 <properties>
    				<junit.version>4.12</junit.version>
				 </properties>
			 <dependencyManagement>						//dependencyManagement :默认版本,在子类的pom中会有默认的版本号,依赖管理
    				<dependencies>
					<!--junit-->
        					<dependency>
            					<groupId>junit</groupId>
            					<artifactId>junit</artifactId>
            					<scope>test</scope>
            					<version>${junit.version}</version>
        					</dependency>
    				</dependencies>
				</dependencyManagement>      
pom需要配置的东西	
    <!--打包方式pom-->
    <packaging>pom</packaging>
    <!--统一版本号管理-->
    <properties>
        <junit.version>4.12</junit.version>
        <lombok.version>1.18.12</lombok.version>
        <spring-cloud-dependencies.version>Greenwich.SR3</spring-cloud-dependencies.version>
        <springBoot.version>2.3.1.RELEASE</springBoot.version>
        <mysql.version>8.0.20</mysql.version>
        <druid.version>1.1.18</druid.version>
        <mybatis-spring-boot>2.1.2</mybatis-spring-boot>
        <log4j.version>1.2.17</log4j.version>
        <logback.version>1.2.3</logback.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!--springCloud依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springBoot依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${springBoot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--数据库-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!--SpringBoot依赖-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis-spring-boot}</version>
            </dependency>
        <dependency>
        	<groupId>mysql</groupId>
        	<artifactId>mysql-connector-java</artifactId>
        </dependency><!--日志测试-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>${logback.version}</version>
        </dependency>
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
            <version>${junit.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
        <!--日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>

        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>	

xml中的配置

#spring配置
	spring:
	application:
    				name: springcloud-provider-dept
  			datasource:
    				type: com.alibaba.druid.pool.DruidDataSource
    				driver-class-name: com.mysql.cj.jdbc.Driver
    				url: jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=utf-8
    				data-username: root
    				data-password: Root123456application.yml配置:
	#pom文件中引入依赖,(用到1.springcloud中的pojo类所以需要把依赖引入)
		<dependency>
        			<groupId>com.xinzhi</groupId>
        			<artifactId>1.springcloud</artifactId>
        			<version>1.0-SNAPSHOT</version>
    		</dependency>
	
	#定义启动端口
	server:
	port: 8001
		#mybatis配置
		mybatis:
  			type-aliases-package: com.xinzhi.pojo
  			config-location:  classpath:mybatis/mapper/mybatis-config.xml	//config路径
  			mapper-locations: classpath:mybatis/mapper/*.xml		//mapper.xml的路径
注解解释
	@Mapper //表示这个层是mapper层,也就是最原始写出的dao层
	@Repository	//表示被spring托管
	@RestController	//提供Restful服务,标明controller层
	@PathVariable("id")long id  	//这个注解一般用在controller传参的括号中,用来绑定字段
	@Configuration  //相当于定义applicationContext.xml
	@Bean注入 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值