摘要: 一、创建提供者工程01-provider-8081 (1) 创建工程 创建一个Spring Initializr工程,并命名为01-provider-8081。导入Lombok、Web、JPA及MySQL驱动依赖 (2) pom.xml导入Druid依赖 <dependency> <groupId> 阅读全文
posted @ 2020-07-07 22:50 edda_huang 阅读(181) 评论(0) 推荐(0)
摘要: 一、创建00-eurekaserver-8000 (1)创建工程 创建一个Spring Initializr工程,命名为00-eurekaserver-8000,仅导入Eureka Server依赖即可 (2)pom.xml文件如下 若你使用的是JDK6、7、8,那么这些依赖无需导入。而JDK9及其 阅读全文
posted @ 2020-07-07 22:48 edda_huang 阅读(193) 评论(0) 推荐(0)
摘要: 一、简介 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS(AWS 是业务流程管理开发平台AWS Enterprise BPM Platform 业务流程管理开发平台)域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringClo 阅读全文
posted @ 2020-07-07 22:44 edda_huang 阅读(154) 评论(0) 推荐(0)
摘要: 一、简介 打开Spring官网http://spring.io 首页的中部,可以看到Spring Cloud的简介。 【原文】Building distributed systems doesn't need to be complex and error-prone(易错). Spring Clo 阅读全文
posted @ 2020-07-07 17:01 edda_huang 阅读(420) 评论(0) 推荐(0)
摘要: 一、简介 https://swagger.io/tools/swagger-ui/ Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允 阅读全文
posted @ 2020-07-07 16:58 edda_huang 阅读(220) 评论(0) 推荐(0)
摘要: 一、简介 Druid是阿里开源的一个JDBC应用组件, 其包括三部分: DruidDriver: 代理Driver,能够提供基于Filter-Chain模式的插件体系。 DruidDataSource: 高效可管理的数据库连接池。 SQLParser: 实用的SQL语法分析 通过Druid连接池中间 阅读全文
posted @ 2020-07-07 16:56 edda_huang 阅读(1849) 评论(0) 推荐(0)
摘要: 一、简介 Turbine是聚合服务器发送事件流数据的一个工具,Hystrix的监控中,只能监控单个节点,实际生产中都为集群,因此可以通过Turbine来监控集群下Hystrix的metrics情况 Turbine的github地址:https://github.com/Netflix/Turbine 阅读全文
posted @ 2020-07-07 16:54 edda_huang 阅读(252) 评论(0) 推荐(0)
摘要: 一、原生java整合elasticsearch的API地址 https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.2/java-docs.html 二、Spring Data的官网 http://projects.spring 阅读全文
posted @ 2020-07-07 16:44 edda_huang 阅读(229) 评论(0) 推荐(0)
摘要: 一、 Starter工程的命名 Spring 官方定义的Starter通常命名遵循的格式为spring-boot-starter-{name},例如 spring-boot-starter-web。Spring官方建议,非官方Starter命名应遵循{name}-spring-boot-starte 阅读全文
posted @ 2020-07-07 16:42 edda_huang 阅读(181) 评论(0) 推荐(0)
摘要: Thymeleaf的官网为: http://www.thymeleaf.org/ 一、变量表达式${…} 使用${…}括起来的表达式,称为变量表达式。该表达式的内容会显示在HTML标签体文本处。 该表达式一般都是通过th:text标签属性进行展示的 处理器类 修改index页面 二、选择表达式*{… 阅读全文
posted @ 2020-07-07 16:40 edda_huang 阅读(946) 评论(0) 推荐(0)
摘要: 使用Spring Boot开发较之以前的基于xml配置式的开发,要简捷方便快速的多。而这完全得益于Spring Boot的自动配置。 打开启动类的@SpringBootApplication注解源码 @SpringBootApplication注解是组合注解 (1) 元注解 前四个是专门(即只能)用 阅读全文
posted @ 2020-07-07 16:39 edda_huang 阅读(141) 评论(0) 推荐(0)
摘要: 一、简介 官方文档 http://codecentric.github.io/spring-boot-admin/2.0.2/ Spring Boot Admin是一个管理和监控Spring Boot应用程序的开源软件。每个应用都认为是一个客户端,通过HTTP或者服务注册发现Spring Cloud 阅读全文
posted @ 2020-07-07 16:37 edda_huang 阅读(226) 评论(0) 推荐(0)
摘要: 一、Thymeleaf简介 Thymeleaf[taɪm lif],百里香叶,是一个流行的模板引擎,该模板引擎采用Java语言开发。Java中常见的模板引擎有Velocity、Freemaker、Thymeleaf等。不同的模板引擎都会具有自己的特定的标签体系,而Thymeleaf以HTML标签为载 阅读全文
posted @ 2020-07-07 16:35 edda_huang 阅读(225) 评论(0) 推荐(0)
摘要: 在Spring Boot中使用Servlet,根据Servlet注册方式的不同,有两种使用方式。若使用的是Servlet3.0+版本,则两种方式均可使用;若使用的是Servlet2.5版本,则只能使用配置类方式 一、Servlet3.0+版本方式 (1)创建工程07-servlet (2)导入依赖 阅读全文
posted @ 2020-07-07 16:34 edda_huang 阅读(273) 评论(0) 推荐(0)
摘要: Spring Boot对于原来在配置文件配置的内容,现在全部体现在一个类中,该类需要继承自WebMvcConfigurationSupport类,并使用@Configuration进行注解,表示该类为一个JavaConfig类,其充当配置文件的角色 一、定义工程 二、导入依赖 <?xml versi 阅读全文
posted @ 2020-07-07 16:32 edda_huang 阅读(138) 评论(0) 推荐(0)
摘要: 一、定义工程 创建一个spring boot模块 二、修改pom文件 在pom文件中添加Spring Boot与Redis整合依赖 <dependencies> <!--spring boot与redis整合依赖--> <dependency> <groupId>org.springframewor 阅读全文
posted @ 2020-07-07 16:31 edda_huang 阅读(203) 评论(0) 推荐(0)
摘要: 一、logback日志技术介绍 Spring Boot中使用的日志技术为logback。其与Log4J都出自同一人,性能要优于Log4J,是Log4J的替代者。 在Spring Boot中若要使用logback,则需要具有spring-boot-starter-logging依赖,而该依赖被spri 阅读全文
posted @ 2020-07-07 16:30 edda_huang 阅读(168) 评论(0) 推荐(0)
摘要: 一、创建项目 二、添加依赖 <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!--mybatis与spring boot整合 阅读全文
posted @ 2020-07-07 16:28 edda_huang 阅读(190) 评论(0) 推荐(0)
摘要: 一、步骤 导入依赖:MySQL驱动、Druid依赖、MyBatis与Spring Boot整合依赖、Lombok依赖 在Service接口实现类上添加@Service注解 在Dao接口上添加@Mapper注解 在pom中将dao目录注册为资源目录 在配置文件中注册映射文件、实体类别名,及数据源 二、 阅读全文
posted @ 2020-07-07 16:27 edda_huang 阅读(244) 评论(0) 推荐(0)
摘要: 一、创建webapp目录 在src/main下创建webapp目录,用于存放jsp文件。这就是一个普通的目录,无需执行Mark Directory As 二、创建jsp 1、指定web资源目录 在spring boot工程中若要创建jsp文件,一般是需要在src/main下创建webapp目录,然后 阅读全文
posted @ 2020-07-07 16:25 edda_huang 阅读(1236) 评论(0) 推荐(0)
摘要: 目录 一、自定义异常页面 二、单元测试 ​三、多环境选择 四、读取主配置文件中的属性 五、读取List属性 一、自定义异常页面 对于404、405、500等异常状态,服务器会给出默认的异常页面,而这些异常页面一般都是英文的,且非常不友好。我们可以通过简单的方式使用自定义异常页面,并将默认状态码页面进 阅读全文
posted @ 2020-07-07 16:24 edda_huang 阅读(167) 评论(0) 推荐(0)
摘要: 一、简介 Actuator(激励者;执行器)是Spring Boot提供的一个可挺拔模块,用于对工程进行监控。其通过不同的监控终端实现不同的监控功能。其功能与Dubbo的监控中心类似,不同的是,Dubbo的监控中心是需要专门部署的,而Spring Boot的Actuator是存在于每一个工程中的。 阅读全文
posted @ 2020-07-07 16:23 edda_huang 阅读(221) 评论(0) 推荐(0)
摘要: 一、简介 前面创建的Spring Boot工程最终被打为了Jar包,是以可执行文件的形式出现的,其使用了Spring Boot内嵌的Tomcat作为Web服务器来运行web应用的。新版Dubbo的监控中心工程就是典型的应用。 但在实际生产环境下,对于访问量不大的应用,直接以Jar包的形式出现,使用起 阅读全文
posted @ 2020-07-07 16:19 edda_huang 阅读(156) 评论(0) 推荐(0)
摘要: 一、Spring Boot简介 Spring Boot是由Pivotal[ˈpɪvətl]团队(一家做大数据的公司)提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Bo 阅读全文
posted @ 2020-07-07 16:18 edda_huang 阅读(182) 评论(0) 推荐(0)
摘要: 一、zkCli.sh ./zkCli.sh -server 39.97.176.160:2182 39.97.176.160 : zookeeper服务器Ip 2182:zookeeper端口 二、ZooInspector 下载地址:https://issues.apache.org/jira/se 阅读全文
posted @ 2020-07-07 14:32 edda_huang 阅读(1349) 评论(0) 推荐(0)
摘要: 一、官网 https://zookeeper.apache.org/ 二、下载安装 (1)下载 复制链接地址 http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz linux中执行 wge 阅读全文
posted @ 2020-07-07 14:26 edda_huang 阅读(163) 评论(0) 推荐(0)
摘要: 一、官网 https://zookeeper.apache.org/ 二、简介 Apache ZooKeeper致力于开发和维护开源服务器,实现高度可靠的分布式协调。 ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形 阅读全文
posted @ 2020-07-07 14:23 edda_huang 阅读(348) 评论(0) 推荐(0)
摘要: 一、简介 ZAB ,Zookeeper Atomic Broadcast,zk原子消息广播协议,是专为ZooKeeper设计的一种支持崩溃恢复的原子广播协议,在 Zookeeper中,主要依赖 ZAB 协议来实现分布式数据一致性。 Zookeeper使用一个单一主进程来接收并处理客户端的所有事务请求 阅读全文
posted @ 2020-07-07 14:22 edda_huang 阅读(239) 评论(0) 推荐(0)
摘要: 一、简介 Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的、具有高容错性的一致性算法。Google Chubby的作者Mike Burrows说过,世上只有一种一致性算法,那就是Paxos,所有其他一致性算法都是Paxos算法的不完整版。Paxos算法 阅读全文
posted @ 2020-07-07 14:20 edda_huang 阅读(197) 评论(0) 推荐(0)
摘要: 一、简介 ZooKeeper由雅虎研究院开发,后来捐赠给了Apache。ZooKeeper是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于Paxos算法的ZAB协议完成的。其主要功能包括:配置维护、域名服务、分布式同步、集群管理等。 zookeeper的官网: 阅读全文
posted @ 2020-07-07 14:16 edda_huang 阅读(336) 评论(0) 推荐(0)
摘要: 高并发下Redis会出现的问题: 缓存穿透 缓存雪崩 热点缓存 一、定义commons工程11-dubboCommons (1) 创建工程 创建Maven的Java工程,并命名为11-dubboCommons (2) 定义pom文件 <groupId>com.abc</groupId><artifa 阅读全文
posted @ 2020-07-07 14:03 edda_huang 阅读(1490) 评论(0) 推荐(0)
摘要: 从前面“对提供者的异步调用”例子可以看出,消费者对提供者实现了异步调用,消费者线程的执行过程不再发生阻塞,但提供者对IO耗时操作仍采用的是同步调用,即IO操作仍会阻塞Dubbo的提供者线程。 但需要注意,提供者对IO操作的异步调用,并不会提升RPC响应速度,因为耗时操作终归是需要消耗那么多时间后才能 阅读全文
posted @ 2020-07-07 14:02 edda_huang 阅读(252) 评论(0) 推荐(0)
摘要: 使用Future实现异步调用,对于无需获取返回值的操作来说不存在问题,但消费者若需要获取到最终的异步执行结果,则会出现问题:消费者在使用Future的get()方法获取返回值时被阻塞。为了解决这个问题,Dubbo又引入了CompletableFuture来实现对提供者的异步调用 一、创建提供者10- 阅读全文
posted @ 2020-07-07 14:01 edda_huang 阅读(1009) 评论(0) 推荐(0)
摘要: Dubbo的四大组件工作原理图,其中消费者调用提供者采用的是同步调用方式。消费者对于提供者的调用,也可以采用异步方式进行调用。异步调用一般应用于提供者提供的是耗时性IO服务 一、Future异步执行原理 黑色同步调用,而红色为异步调用 UserThread:消费者线程 IOThrea:提供者线程 S 阅读全文
posted @ 2020-07-07 13:59 edda_huang 阅读(573) 评论(0) 推荐(0)
摘要: Dubbo的四大组件工作原理图,其中消费者调用提供者采用的是同步调用方式。消费者对于提供者的调用,也可以采用异步方式进行调用。异步调用一般应用于提供者提供的是耗时性IO服务 一、Future异步执行原理 黑色同步调用,而红色为异步调用 UserThread:消费者线程 IOThrea:提供者线程 S 阅读全文
posted @ 2020-07-07 13:57 edda_huang 阅读(172) 评论(0) 推荐(0)
摘要: Dubbo 2.6.5 版本以后,如果我们的服务启动过程需要warmup事件,就可以使用delay进行服务延迟暴露。只需在服务提供者的<dubbo:service/>标签中添加delay属性。其值可以有三类 正数:单位为毫秒,表示在提供者对象创建完毕后的指定时间后再发布服务。 0:默认值,表示当前提 阅读全文
posted @ 2020-07-07 13:52 edda_huang 阅读(499) 评论(0) 推荐(0)
摘要: 一、创建提供者08-provider-registers (1) 创建工程 直接复制05-provider-group工程,并命名为08-provider-registers (2) 修改配置文件 二、创建消费者08-consumer-registers (1) 创建工程 直接复制05-consum 阅读全文
posted @ 2020-07-07 13:49 edda_huang 阅读(364) 评论(0) 推荐(0)
摘要: 为了进一步提高消费者对用户的响应速度,减轻提供者的压力,Dubbo提供了基于结果的声明式缓存。该缓存是基于消费者端的,所以使用很简单,只需修改消费者配置文件,与提供者无关 一、创建消费者07-consumer-cache (1) 创建工程 直接复制02-consumer-zk工程,并命名为07-co 阅读全文
posted @ 2020-07-07 13:37 edda_huang 阅读(333) 评论(0) 推荐(0)
摘要: 为了防止某个消费者的QPS或是所有消费者的QPS总和突然飙升而导致的重要服务的失效,系统可以对访问流量进行控制,这种对集群的保护措施称为服务限流。 Dubbo中能够实现服务限流的方式较多,可以划分为两类:直接限流与间接限流 直接限流:通过对连接数量直接进行限制来达到限流的目的。(官方方案汇总) 间接 阅读全文
posted @ 2020-07-07 13:33 edda_huang 阅读(836) 评论(0) 推荐(0)
摘要: 服务降级的发生,其实是由于消费者调用服务超时引起的,即从发出调用请求到获取到提供者的响应结果这个时间超出了设定的时限。默认服务调用超时时限为1秒。可以在消费者端与提供者端设置超时时限。 一、创建提供者工程06-provider-timeout (1) 创建工程 复制02-provider-zk工程, 阅读全文
posted @ 2020-07-07 13:26 edda_huang 阅读(1130) 评论(0) 推荐(0)
摘要: 一、简介 解决高并发的三把利器:降级、限流、缓存 (1) 什么是服务降级 服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务有策略的降低服务级别,以释放服务器资源,保证核心任务的正常运行 (2) 服务降级方式 能够实现服务降级方式很多,常见的有如下几种情况: 部分服务暂停 全部服务 阅读全文
posted @ 2020-07-07 13:24 edda_huang 阅读(3023) 评论(0) 推荐(0)
摘要: 集群容错指的是,当消费者调用提供者集群时发生异常的处理方案 一、Dubbo内置的容错策略 (1) Failover 故障转移策略。当消费者调用提供者集群中的某个服务器失败时,其会自动尝试着调用其它服务器。该策略通常用于读操作,例如,消费者要通过提供者从DB中读取某数据。但重试会带来服务延迟 (2) 阅读全文
posted @ 2020-07-07 13:00 edda_huang 阅读(224) 评论(0) 推荐(1)
摘要: 一、搭建负载均衡环境 两个提供者,一个消费者 二、创建提供者 (1) 创建提供者02-provider-zk01 A、创建工程 复制前面的02-provider-zk工程,并重命名为02-provider-zk01 B、 修改配置文件 C、修改Service实现类 (2) 创建提供者02-provi 阅读全文
posted @ 2020-07-07 12:59 edda_huang 阅读(249) 评论(0) 推荐(0)
摘要: 除了Dubbo服务暴露协议Dubbo协议外,Dubbo框架还支持另外8种服务暴露协议:RMI协议、Hessian协议、HTTP协议、WebService协议、Thrift协议、Memcached协议、Redis协议、Rest协议。但在实际生产中,使用最多的就是Dubbo服务暴露协议 (1) dubb 阅读全文
posted @ 2020-07-07 11:47 edda_huang 阅读(445) 评论(0) 推荐(0)
摘要: 服务分组与多版本控制的使用方式几乎是相同的,只要将version替换为group即可。但使用目的不同。使用版本控制的目的是为了升级,将原有老版本替换掉,将来不再提供老版本的服务,所以不同版本间不能出现相互调用。而分组的目的则不同,其也是针对相同接口,给出了多种实现类。但不同的是,这些不同实现并没有谁 阅读全文
posted @ 2020-07-07 11:45 edda_huang 阅读(1858) 评论(0) 推荐(0)
摘要: 当系统进行升级时,一般都是采用“灰度发布(又称为金丝雀发布)”过程。即在低压力时段,让部分消费者先调用新的提供者实现类,其余的仍然调用老的实现类,在新的实现类运行没有问题的情况下,逐步让所有消费者全部调用成新的实现类。多版本控制就是实现灰度发布的 一、创建提供者04-provider-version 阅读全文
posted @ 2020-07-07 11:39 edda_huang 阅读(862) 评论(0) 推荐(0)
摘要: 2019年初,官方发布了Dubbo管理控制台0.1版本。结构上采取了前后端分离的方式,前端使用Vue和Vuetify分别作为Javascript框架和UI框架,后端采用Spring Boot框架 一、下载 Dubbo管理控制台的下载地址为:https://github.com/apache/dubb 阅读全文
posted @ 2020-07-07 11:37 edda_huang 阅读(352) 评论(0) 推荐(0)
摘要: 一、创建提供者03-provider-web (1) 创建工程 创建Maven的web工程,然后创建实现类。 (2) 导入依赖 Spring的版本为4.3.16 需要的依赖有: dubbo2.7.0版本依赖 zk客户端curator依赖 servlet与jsp依赖 spring相关依赖 spring 阅读全文
posted @ 2020-07-07 11:33 edda_huang 阅读(265) 评论(0) 推荐(0)
摘要: 在生产环境下使用最多的注册中心为Zookeeper,当然,Redis也可以做注册中心 一、创建提供者02-provider-zk (1) 导入依赖 https://blog.csdn.net/u012965203/article/details/96700308 复制前面的提供者工程01-provi 阅读全文
posted @ 2020-07-07 11:20 edda_huang 阅读(467) 评论(0) 推荐(0)
摘要: 一、简介 官网:http://dubbo.apache.org/zh-cn/ Dubbo是 [1] 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [2] Spring框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框 阅读全文
posted @ 2020-07-07 11:10 edda_huang 阅读(1007) 评论(0) 推荐(0)
摘要: 一、简介 Dubbo官网为http://dubbo.apache.org/zh-cn/。该官网是Dubbo正式进入Apache开源孵化器后改的 Dubbo原官网为:http://dubbo.io 二、RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议, 阅读全文
posted @ 2020-07-07 10:31 edda_huang 阅读(313) 评论(0) 推荐(0)