springboot和springcloud
1.springboot如何配置事务
这里采用注解的方式,因为是springboot的推荐的
第一步:导入一个springMybatis的包
第二步;在你的配置类上面打上注解@EnableTransactionManagement
第三步:在需要事务的类上面,比如service层上打上注解@Transactional
当然也可以采用xml的配置
配置方法与springmvc一样,然后在配置类上打上标签importResource就可以将xml交给springboot管理了
application.properties是可以自动导入springboot
如果你有个文件叫jdbc.properties,在配置类上打上propertiesSources(classes:“你的properties”)就可以导入properties配置文件了
2.单体应用和微服务的区别
单体应用:就是一个独立的应用,所有的模块、业务、资源等,都在一个项目中,最终项目都会被打包成一个war包或者一个jar包,使用一个tomcat(容器)去部署
多模块是单体应用吗:多模块也是单体应用,这里指的是传统的多模块
单体应用的缺点:1.扩展能力受限,不方便局部扩展
2.复杂性高,项目大,代码臃肿
3.不方便开发,不方便升级
4.模块、业务耦合度高
5.一旦一个模块出问题,整个项目就挂掉
6.技术选型单一
单体应用的有点:1.针对小项目,部署相对分布式来说要简单
2.前期项目搭建比较快
3.项目规模小的时候,单体的性能比较高
微服务:将一个大的应用拆分成多个小的服务,这些每个小的应用相对独立,每个小的应用都有自己的容器(tomcat去运行),都有自己的运行进程,这些小的应用,通过网络协议,一般是http、restful进行相互通信,所有的微服务一起工作,最终完成我们整个项目的需求
微服务的优点就是单体的缺点
微服务的缺点:各个微服务之间的交互受网络之间的影响
运行的成本高,适合大型项目和大型公司来玩
部署起来比较麻烦
整个项目的总体来看比较复杂
3.springcloud
springcloud是基于springboot实现的服务理念治理工具
4.spring和dobbo的区别
1.SpringCloud 全家桶,全方位解决方案 , 基于Http协议通信 , 2.dubbo是一个rpc框架,需要整合其他的组件来开发维护 ,通信协议基于原生的tcp ,3.从通信上来说 ,dubbo略胜 , 从简单读来说,SpringCloud略胜 , 4.功能的完整度来说SpringCloud胜利
5。搭建springcloud的Eureka注册中心
5.1导包
先在parent中导入包
<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>
<springboot.version>2.0.5.RELEASE</springboot.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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后在注册中心导入包
<!--springboot支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--Eureka服务端支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
在主配置类上打上注解
@SpringBootApplication
@EnableEurekaServer //标识是eureka服务端
public class EnrekaServerApplication3000
{
public static void main( String[] args )
{
SpringApplication.run(EnrekaServerApplication3000.class, args);
}
}
配置yml文件
server:
port: 3000
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false #是否要注册到eureka
fetchRegistry: false #表示是否从Eureka Server获取注册信息
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机配置
然后运行测试,http://localhost:3000/
6.配置服务提供者
导包
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 集成Web的jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
配置yml文件
eureka:
client:
serviceUrl:
defaultZone: http://localhost:3000/eureka/
instance:
prefer-ip-address: true
instance-id: User-Service:1000 #注册中心服务端的注册地址
server:
port: 1000
spring:
application:
name: User-Service #不要使用下划线
运行测试
http://localhost:3000/
在下面Application会发现一个服务提供者
7.配置服务消费者
导包
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 集成Web的jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
配置yml文件
eureka:
client:
serviceUrl:
defaultZone: http://localhost:3000/eureka/
instance:
prefer-ip-address: true
instance-id: Pay-Service:2000 #注册中心服务端的注册地址
server:
port: 2000
spring:
application:
name: Pay-Service #不要使用下划线
8.eruka的集群
为了防止eruka挂掉导致微服务程序整个就挂掉
这里就在一台电脑上模拟有两个不同ip的情况
第一步,百度如何修改ip
C:\Windows\System32\drivers\etc里面有个host文件
点击在下面加入127.0.0.1 peer1 127.0.0.1 peer2
第二步,将上面配置的Eureka注册中心前面配置的yml文件重新配置一个
前面那个可以重新命名保留着
#主配置
spring:
profiles:
active: peer2
---
#第一个配置
spring:
profiles: peer1
application:
name: Eureka-Service #不要使用下划线
instance:
prefer-ip-address: true
instance-id: Pay-Service:3000 #注册中心服务端的注册地址
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:3001/eureka/
server:
port: 3000
---
#第二个配置
spring:
profiles: peer2
application:
name: Eureka-Service #不要使用下划线
instance:
prefer-ip-address: true
instance-id: Pay-Service:3001 #注册中心服务端的注册地址
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:3000/eureka/
server:
port: 3001
这里如果在运行了第一个peer2或者peer1后,然后需要运行另外一个peer2或者peer1,如果是ideal2017版本就可以不动,如果是idea2019版本就可以点击右上角的编辑,然后在出现的里面勾上它
来源:CSDN
作者:你这秃驴又和老衲抢师太
链接:https://blog.csdn.net/weixin_45624614/article/details/104284297