springboot和springcloud

≡放荡痞女 提交于 2020-02-13 00:43:55

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版本就可以点击右上角的编辑,然后在出现的里面勾上它

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!