Java入门(九):微服务

目录

9. 微服务

9.1 概念

9.2 Spring Cloud

9.3 Spring Cloud和Spring Boot的关系:

9.4 Spring Cloud特点

9.5 Spring Cloud 核心组件: 

9.6 微服务测试

10. 小结


【写在前面】

前文链接:Java入门(八):SpringBoot, SpringBoot DB, Spring MVC

9. 微服务

9.1 概念

(1)微服务英文名称Microservice,微服务架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却也可以独立地进行扩展。                  

(2)微服务简化了开发,它将创建复杂系统的任务切分为数十乃至上百个小服务,这些小服务易于被小型的软件工程师团队所理解和修改。但是微服务并未真正地消除复杂性,而是将复杂性迁移到对大量服务的连接、管理和监控上。

        

9.2 Spring Cloud

(1)什么是Spring Cloud?

是基于SpringBoot的一整套实现微服务的框架。

(2)Spring Cloud的作用?

它提供了微服务开发所需的多个组件:

配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话、集群状态管理等组件

(3)官网 https://spring.io/projects/spring-cloud/

      

9.3 Spring Cloud和Spring Boot的关系:

(1)Spring Boot是Spring的一套快速配置脚手架,可基于Spring Boot快速开发单个微服务;

(2)Spring Cloud是基于Spring Boot实现的;

(3)Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;

(4)Spring Boot使用了约束优于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置 , Spring Cloud很大的一部分是基于Spring Boot来实现,Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。

(5)SpringBoot在SpringClound中起到了承上启下的作用,如果要学习SpringCloud必须要先学习SpringBoot。

        

9.4 Spring Cloud特点

(1)分布式/版本化配置

(2)服务注册和发现

(3)路由

(4)service - to - service调用

(5)负载均衡

(6)断路器

(7)分布式消息传递

        

9.5 Spring Cloud 核心组件: 

      

9.6 微服务测试

(1)微服务测试的本质是接口测试

(2)重点:微服务架构下,既需要保障各服务内部每个模块的完整性,又需要关注模块间、服务间的交互。

(3)难点:

1)关联性:微服务通常情况下会与多个微服务进行交互。当某服务发生变化时,会直接影响到依赖的其他服务。

2)可靠性:为了尽可能降低微服务间通信对网络情况的高度依赖,降低因网络不稳定引起的故障率,设计微服务架构时会设计隔离机制。

3)数据一致性:微服务是基于分布式系统设计的,需要考虑分布式系统数据一致性的问题。

10. 小结

(1)如果自动化扫描<aop:aspectj-autoproxy/>,那么他肯定是找标签@Aspect。

(2)springboot工程的目录结构与spring是一致的,但是springboot的配置文件推荐使用yaml 。    

(3)@RestController:修饰的类,是专门处理url的。

(4)springboot内置了tomcat 容器。默认端口8080,保证程序能够沟通web的形式启动。

(5)一个类定义为@RestController,那么一个url进来以后,就会映射到该类上,对传入的url与该类已经定义好的url进行匹配!

(6)springboot 的代码,我们通过mvn build命令,生成的jar包,是可以直接拿来运行的,

运行命令:java -jar 你的代码

(7)springboot 最简单也是最有效的应用

前端处理逻辑,需要看到后端的返回值,然后前端再写逻辑。前端不care后端的处理,那么我么在后端可以写一个接口的mock 服务,匹配前端的url,然后直接返回相应的值,不做逻辑处理。

(8)示例:

@RequestMapping("/hello")
public String hello(){
    return "Hello Spring boot!";
}   

@RequestMapping("/hello2")
public String hello2(){
    return "Hello Spring boot2!";
}

 在springboot 下使用配置文件来配置bean,也是可以的

@Component
@ConfigurationProperties(prefix = "dog")
Class Dog

(9)快速创建get和set方法

在创建一个备案的时候,配置好属性,在eclipse 中,选中该类,然后 Resource>generator getters and setters,会自动创建get 和set方法,在有多个属性的情况下,能提高效率。  

(10)springboot 启动时通过注解,把所需要的配置文件,加入到了spring的容器中。  

(11)MVC

M:模型,处理与数据库相关的内容。

V:视图,用户UI页面。

C:控制器Controler,解析url,并指定具体的实现逻辑。

(12)四者相互之间的关系

spring 是基础。

spring mvc,是spring实现了mvc模式。

springboot 整合了spring mvc,使其更加的简单方便。

spring boot 就是微服务,一个springboot的jar 包,我们就可以理解为是一个独立的服务,因为它是可以独立部署的!!!

(13)微服务A和微服务B两个spring boot应用,他们都可以提供对外的接口url,来访问@RestController 修饰的类,当然这两个服务之间也可以相互调用使用彼此的功能。

(14)美团可理解微服务

app 进入,使用。

单车,网关接受请求,把请求进行解析,使用单车服务。

外卖,网关接受请求,把请求进行解析,使用外卖服务。

社区团购,网关接受请求,把请求进行解析,使用社区团购服务。

(15)微服务把代码耦合高的问题给解决了,但是带来了新的问题:

1)分布式数据的同步问题。

2)服务量大,对于运维人员的要求变高了。

(16)springboot 是微服务的应用

springboot 的各个应用 组成了spring cloud

spring cloud 通过各个springboot写的应用实现了如下功能:

分布式/版本化配置

服务注册和发现

路由

service - to - service调用

负载均衡

断路器(服务熔断 和服务降级)

分布式消息传递

(17)关于微服务的测试

对于ui测试人员(web\app\公众号\小程序),后端使用微服务或者不使用微服务,影响不大,基本无感。

好多微服务的接口,前端是无法进行测试的,因为根本没有ui页面。

绝大多数情况下,对微服务的测试就是接口测试。

对微服务提供的接口进行功能、性能、安全测试。   

(18)接口测试核心步骤

准备接口测试数据

构建接口(代码或者工具)并发送

解析服务端的接口响应来判断接口测试通过与否

(19)所谓的ORM就是 把数据库的表跟类对应了起来。

比如:类User对应数据库的表t_user2

属性 id ,name,password,对应了表中的三个字段id ,name,password

对三个属性的 get 和set操作,就相当于对 数据库的读写操作

(20)dqm 定义了一些规则,通过这些规则可以创建我们所需要的一些sql语句

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods

第一种方式,通过Repository  来进行基础sql语句的操控

UserRepository extends JpaRepository<User,Long>

第二种方式就是sql自定义语句的编写

在respository中定义方法,用@Query去修饰,设置nativeQuery=true

@Query(value="select * from user" ,nativeQuery=true)

    public List<User> findAllInfo();

第三种方式

DQM,用的较少,几乎都是第一种方式和第二种方式相结合

        

(21)我们应用db

前提条件,yaml 文件里配置了db的连接信息

1)定义 public interface UserRepository extends JpaRepository<User,Long>{ }

        如果没有需要自定义的方法,那么就空实现

        如果有自定的方法,就用@Query ,记住nativeQuery=true

2)在contrller里 引入UserRepository

        通常的方式如下:

         @Autowired

         private UserRepository userRepository;

3)对url进行匹配,在匹配的url里调用db逻辑

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Summary Testing Java Microservices teaches you to implement unit and integration tests for microservice systems running on the JVM. You'll work with a microservice environment built using Java EE, WildFly Swarm, and Docker. You'll learn how to increase your test coverage and productivity, and gain confidence that your system will work as you expect. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the Technology Microservice applications present special testing challenges. Even simple services need to handle unpredictable loads, and distributed message-based designs pose unique security and performance concerns. These challenges increase when you throw in asynchronous communication and containers. About the Book Testing Java Microservices teaches you to implement unit and integration tests for microservice systems running on the JVM. You'll work with a microservice environment built using Java EE, WildFly Swarm, and Docker. You'll advance from writing simple unit tests for individual services to more-advanced practices like chaos or integration tests. As you move towards a continuous-delivery pipeline, you'll also master live system testing using technologies like the Arquillian, Wiremock, and Mockito frameworks, along with techniques like contract testing and over-the-wire service virtualization. Master these microservice-specific practices and tools and you'll greatly increase your test coverage and productivity, and gain confidence that your system will work as you expect. What's Inside Test automation Integration testing microservice systems Testing container-centric systems Service virtualization About the Reader Written for Java developers familiar with Java EE, EE4J, Spring, or Spring Boot. About the Authors Alex Soto Bueno and Jason Porter are Arquillian team members. Andy Gumbrecht is an Apache TomEE developer and PMC. They all have extensive enterprise-testing experience. Table of Cont
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 视频简介: 目前业界最流行的微服务架构正在或者已被各种规模的互联网公司广泛接受和认可,业已成为互联网开发人员必备技术。无论是互联网、云计算还是大数据Java平台已成为全栈的生态体系,其重要性几乎不可替代。Spring Boot作为微服务的基础设施之一,背靠强大的Spring 生态社区,支撑Spring Cloud技术体系。本课程采用由浅入深,层层递进的讲解方式, 让你轻松掌握SpringBoot的快速构建Spring项目的方式,并且还深入剖析SpringBoot内部核心原理,如:自动配置原理,start原理,自定义start等, 让你知其然,知其所以然 讲解方式: 本课程采用由浅入深,层层递进的讲解方式, 让你轻松掌握SpringBoot的快速构建Spring项目的方式,并且还深入剖析SpringBoot内部核心原理,如:自动配置原理,start原理,自定义start等, 让你知其然,知其所以然 课程亮点: 1、课程由浅到深,由原理到实践,适合零基础入门学习。 2、课程中包含大量SpringBoot 原理讲解、源码分析。 3、课程中涉及很多SpringBoot 实用插件技术、监控技术; 适用人群: 1、有一定的Java基础以及SSM框架知识。 2、对目前职业有进一步提升要求,希望从事数据行业高薪工作的在职人员。 基础课程主讲内容包括: 阶段一:SpringBoot 快速入门 1. SpringBoot介绍 2. SpringBoot的核心功能 3. SpringBoot的优势 4. SpringBoot入门程序 5. SpringBoot配置文件类型 6. 配置文件与配置类的属性映射方式 7. SpringBoot整合Mybatis 8. SpringBoot整合Junit 9. SpringBoot整合Redis 阶段二: SpringBoot核心原理 1. 起步依赖原理分析 2. 自动配置原理解析 3. 自定义起步依赖并实现自动配置 4. 事件监听 5. 初始化流程 6. SpringBoot服务监控

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值