fyzn12
RSS SITEMAP

Articles

  • 数据库易忘知识点总结

    根据数据表,导出数据结构 SELECT COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHARACTER_MAXIMUM_LENGTH 长度, IS_NULLABLE 是否为空, COLUMN_DEFAULT 默认值, COLUMN_COMMENT 备注 FROM INFORMATION_SCHEMA. COLUMNS WHERE – super_express为数据库名称,到时候只需要修改成你要导出表结构的数据库即可 table_schema = ‘super_express’ AND – s_patient_list为表名,到时候换成你要导出的表的名称 – 如果不写的话,默认会查询出所有表中的数据,这样可能就分不清到底哪些字段是哪张表中的了,所以还是建议写上要导出的名名称 table_name = ‘user’
  • SpringCloud整合Hystrix服务保护框架

    1 引入Hystrix需要了解的知识点 1.1 服务的雪崩效应 服务的雪崩效应:默认情况下,tomcat只有一个线程池去处理所有客户端发生的所有请求,这样在高并发下的情况下, 如果客户端所有的请求堆积到同一个接口上(也就是客户端访问同一个接口),tomcat的所有线程去处理请求,可能 会导致其他服务接口无法访问。 假设tomcat最大请求数为20,客户端发送的请求数为100,会发生80个请求产生延迟等待 1.2 Hystrix服务保护框架能解决什么问题 断路器 服务降级 服务熔断 服务隔离机制 服务雪崩效应,连环雪崩效应 注意:如果雪崩效应严重的话,可能会造成整个服务崩溃 1.3 Hystrix解决雪崩效应的原理 服务降级 —-友好提示 在高并发的情况下,防止用户一直等待,在tomcat中没有线程处理客户端发生的请求时,不应该让客户端一直在等待, 使用服务降级(返回一个友好的提示给客户端),目的是为了用户的体验,调用fallback本地方法 服务隔离 —-线程池隔离和信号量隔离 信号量的使用示意图:当n个并发请求去调用一个目标服务接口时,都要获取一个信号量才能真正去调用 目标服务接口,但信号量有限,默认是10个,可以使用maxConcurrentRequests参数配置,如果并发请求数多于 信号量个数,就有线程需要进入队列排队,但排队队列也有上限,默认是 5,如果排队队列也满,则必定有请求线 程会走fallback流程,从而达到限流和防止雪崩的目的。 信号量模式从始至终都只有请求线程自身,是同步调用模式,不支持超时调用,不支持直接熔断,由于没有线程的 切换,开销非常小。 线程池的使用示意图如下图所示,当n个请求线程并发对某个接口请求调用时,会先从hystrix管理的线程池里面 获得一个线程,然后将参数传递给这个线程去执行真正调用。线程池的大小有限,默认是10个线程,可以使用 maxConcurrentRequests参数配置,如果并发请求数多于线程池线程个数,就有线程需要进入队列排队,但排队 队列也有上限,默认是 5,如果排队队列也满,则必定有请求线程会走fallback流程。 线程池模式可以支持异步调用,支持超时调用,支持直接熔断,存在线程切换,开销大。 服务熔断 服务熔断目的是为了保护服务,在高并发的情况下,如果请求达到一定得极限(可以设置阈值),如果流量超过 了这是的阈值,自动开启保护服务的功能,使用服务降级方式返回一个友好的提示。服务熔断和服务降级一起使用 2 搭建Hystrix服务保护框架 2.1 feign客户端超时设置 首先了解feign客户端默认超时时间是1秒 ribbon: # 建立连接所用的时间 ReadTimeout: 5000 # 建立之后读取所用的时间 ConnectTimeout: 5000 2.
  • 微服务架构的介绍

    微服务架构的介绍 1 单体架构 单体架构也称为单体系统或者单体应用。就是一种把系统中的所有功能、模块耦合在一个应用中的架构方式 1.1 单体架构特点 1. 单体架构最终会打包成一个独立的单元(导成一个唯一的jar包或者war包) 2. 会以一个进程的方式来运行 3. 项目结构图如下图所示 1.2 单体架构的优点、缺点 1.2.1 优点: 1. 项目易于管理 2. 部署简单 1.2.2 缺点: 1. 测试成本高 2. 可伸缩性差 3. 可靠性差 4. 迭代困难 5. 跨语言程度差 6. 团队协作难 2 微服务架构 2.1 什么是微服务 微服务就是一种架构风格,一个大型的复杂软件应用,由一个或多个微服务组成。 系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅仅关注于完成一件任务。 2.2 什么架构风格 架构风格就是项目的一种设计模式 2.2.1 常见的架构风格 客户端与服务端 基于组件模型的架构(EJB) 分层架构(MVC) 面向服务架构(SOA) 2.3 微服务的特点 1. 系统是由多个服务构成 2. 每个服务可以单独独立部署 3. 每个服务之间是松耦合的。服务内部是高内聚的,外部是低耦合的。高内聚就是每个服务只关注于完成一个功能 2.
  • SpringCloud之Eureka2.0服务注册中心

    SpringCloud之Eureka2.0服务注册中心 1 了解相关概念 1.1 微服务架构如何拆分 微服务架构把每一个职责单一功能存放在独立的服务中 每个服务运行在单独的进程中 每个服务有自己独立数据库存储、实际上有自己独立的缓存、数据库、消息队列等 1.2 微服务架构与SOA架构区别 微服务架构基于SOA架构演变过来,继承SOA架构优点,在微服务架构中去除SOA架构中的ESB消息总线,采用http+json(restful)进行传输。 微服务架构比SOA架构粒度会更加精细,让专业的人去做专业的事。 SOA架构中可能数据存储会发生共享,微服务架构强调每个服务都是单独的数据库,保证每个服务与服务之间互不影响。 1.3 一线简单的概念 1.3.1 服务治理 服务治理: 阿里巴巴开源的Dubbo和当当网在基础上扩展的Dubbox,Eureka,Apache的Consul等 1.3.2 服务注册与发现 RPC远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念) 服务注册与服务发现原理,在任何的RPC远程调用框架中,都会有一个注册中心。 注册中心的概念:存放服务地址相关信息(接口地址) SpringCloud中支持一下三种注册中心 Eureka Consul(go语言编写) Zookerper 注意:Dubbo支持两种Redis和Zookeeper springcloud组件架构图 2 SpringCloud支持的三种注册中心详解 2.1 Eureka注册中心环境搭建 2.1.1 配置基于单集群的环境 1. 配置pom文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> </parent> <groupId>com.fyzn12</groupId> <artifactId>springcloud-study-server</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>springcloud-study-server Maven Webapp</name> <!
  • SpringCloud整合Consul注册中心

    SpringCloud整合Consul注册中心 1 Consul简介 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更“一站式”,内置了服务注册与发现框 架、具有以下性质: 分布一致性协议实现、 健康检查、 Key/Value存储、 多数据中心方案, 不再需要依赖其他工具(比如ZooKeeper等)。 2 SpringCloud整合Consul 2.1 创建会员服务 2.1.1 配置会员服务的pom文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> </parent> <groupId>com.fyzn12</groupId> <artifactId>springcloud-consul-member</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>springcloud-consul-member Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- 导入springboot的启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 导入springcloud整合Zookeeper启动器--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <dependency> <groupId>org.