YeHongzhi's Blog 
  • 首页
  • 归档
  • 标签
  • 关于
  •     
三千字Apollo配置中心总结

三千字Apollo配置中心总结

思维导图 文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 一、概述Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。 目前Apollo在github有22.6k颗星,在官网登记的使用的公司有451家,算是很流行的配置中心的框架技术。所以接下来跟着我一起学习Apollo配置中心吧。 二、为什么使用配置中心首先,没有配置中心之前传统的配置都是写在配置文件中,比如各种yml、perproties、xml文件。 写在各种文件里最大的问题在于如果需要改配置信息,需要重新部署发布应用才能生效,这是第一个问题。 后面为了做到动态读取配置信息,后面有人改进一下把配置信息存储在数据库的一张表,程序读取表中的配置信息,这种方式很多公司都还在使用,因为简单,而且灵活(修改配置只需要执行个SQL语句,不需要重新部署发布)。但是也不是最完美的,因为缺少了权限控制,没有管理界面进行统一配置,没有历史版本的
 2020-10-21   java  分布式  配置中心 
3千字详细讲解OpenFeign的使用姿势

3千字详细讲解OpenFeign的使用姿势

思维导图 文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 前言目前在SpringCloud技术栈中,调用服务用得最多的就是OpenFeign,所以这篇文章讲一下OpenFeign,希望对大家有所帮助。 一、构建工程使用Nacos作为注册中心,不会搭建Nacos的话,可以参考上一篇注册中心的文章。 首先父工程parent引入依赖。 <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version>
 2020-10-13   java  OpenFeign  微服务 
3千字带你搞懂XXL-JOB任务调度平台

3千字带你搞懂XXL-JOB任务调度平台

思维导图 文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 一、概述在平时的业务场景中,经常有一些场景需要使用定时任务,比如: 时间驱动的场景:某个时间点发送优惠券,发送短信等等。 批量处理数据:批量统计上个月的账单,统计上个月销售数据等等。 固定频率的场景:每隔5分钟需要执行一次。 所以定时任务在平时开发中并不少见,而且对于现在快速消费的时代,每天都需要发送各种推送,消息都需要依赖定时任务去完成,应用非常广泛。 二、为什么需要任务调度平台在Java中,传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题: 不支持集群、不支持统计、没有管理平台、没有失败报警、没有监控等等 而且在现在分布式的架构中,有一些场景需要分布式任务调度: 同一个服务多个实例的任务存在互斥时,需要统一的调度。 任务调度需要支持高可用、监控、故障告警。 需要统一管理和追踪各个服务节点任务调度的结果,需要记录保存任务属性信息等。 显然传统的定时任务已经不满足现在的分布式架构,所以需要一个分布式任务
 2020-10-13   java  分布式  任务调度平台 
微服务之注册中心

微服务之注册中心

思维导图 一、前言伴随着Eurka2.0版本已停止维护,开始要考虑使用微服务新一代的开源的注册中心替代Eureka。 目前据我了解,Consul和Nacos是比较流行的两种替代方案。这篇文章就介绍一下这两种注册中心在微服务中的简单使用,希望对读者有所帮助。...
 2020-09-26   java  微服务  注册中心 
面试官问我什么是JMM

面试官问我什么是JMM

思维导图 文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 面试官:讲讲什么是JMM你要是整这个我可就不困了。 JMM就是Java内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的代码运行在不同的系统上会出现各种问题。所以java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能达到一致的并发效果。 Java内存模型规定所有的变量都存储在主内存中,包括实例变量,静态变量,但是不包括局部变量和方法参数。每个线程都有自己的工作内存,线程的工作内存保存了该线程用到的变量和主内存的副本拷贝,线程对变量的操作都在工作内存中进行。线程不能直接读写主内存中的变量。 不同的线程之间也无法访问对方工作内存中的变量。线程之间变量值的传递均需要通过主内存来完成。 如果听起来抽象的话,我可以画张图给你看看,会直观一点: 每个线程的工作内存都是独立的,线程操作数据只能在工作内存中进行,然后刷回到主存。
 2020-09-20   java  并发编程 
八种经典排序算法总结

八种经典排序算法总结

思维导图 前言算法和数据结构是一个程序员的内功,所以经常在一些笔试中都会要求手写一些简单的排序算法,以此考验面试者的编程水平。下面我就简单介绍八种常见的排序算法,一起学习一下。...
 2020-09-11   java  算法 
从JVM讲到类加载机制,很简单的

从JVM讲到类加载机制,很简单的

思维导图 文章已收录到Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 一、JVM介绍在介绍JVM之前,先看一下.java文件从编码到执行的过程: 整个过程是,x.java文件需要编译成x.class文件,通过类加载器加载到内存中,然后通过解释器或者即时编译器进行解释和编译,最后交给执行引擎执行,执行引擎操作OS硬件。 从类加载器到执行引擎这块内容就是JVM。...
 2020-09-04   java  JVM 
5千字的SpringMVC总结,你值得拥有

5千字的SpringMVC总结,你值得拥有

思维导图 微信公众号已开启:【java技术爱好者】,还没关注的记得关注哦~ 文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 概述SpringMVC再熟悉不过的框架了,因为现在最火的SpringBoot的内置MVC框架就是SpringMVC。我写这篇文章的动机是想通过回顾总结一下,重新认识SpringMVC,所谓温故而知新嘛。 为了了解SpringMVC,先看一个流程示意图: 从流程图中,我们可以看到: 接收前端传过来Request请求。 根据映射路径找到对应的处理器处理请求,处理完成之后返回ModelAndView。 进行视图解析,视图渲染,返回响应结果。 总结就是:参数接收,定义映射路径,页面跳转,返回响应结果。 当然这只是最基本的核心功能,除此之外还可以定义拦截器,全局异常处理,文件上传下载等等。 一、搭建项目在以前的老项目中,因为还没有SpringBoot,没有自动配置,所以需要使用web.xml文件去定义一个DispatcherServlet。现在互联网应用基本上都使用Sprin
 2020-08-30   java  SpringMVC 
MySQL主从复制读写分离,能讲一下吗

MySQL主从复制读写分离,能讲一下吗

思维导图 微信公众号已开启:【java技术爱好者】,还没关注的记得关注哦~ 文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 前言在很多项目,特别是互联网项目,在使用MySQL时都会采用主从复制、读写分离的架构。 为什么要采用主从复制读写分离的架构?如何实现?有什么缺点?让我们带着这些问题开始这段学习之旅吧! 为什么使用主从复制、读写分离主从复制、读写分离一般是一起使用的。目的很简单,就是为了提高数据库的并发性能。你想,假设是单机,读写都在一台MySQL上面完成,性能肯定不高。如果有三台MySQL,一台mater只负责写操作,两台salve只负责读操作,性能不就能大大提高了吗? 所以主从复制、读写分离就是为了数据库能支持更大的并发。 随着业务量的扩展、如果是单机部署的MySQL,会导致I/O频率过高。采用主从复制、读写分离可以提高数据库的可用性。 主从复制的原理①当Master节点进行insert、update、delete操作时,会按顺序写入到binlog中。 ②salve从库连接master
 2020-08-30   java  mysql 
Canal+Kafka实现MySQL与Redis数据同步

Canal+Kafka实现MySQL与Redis数据同步

思维导图 前言在很多业务情况下,我们都会在系统中加入redis缓存做查询优化。 如果数据库数据发生更新,这时候就需要在业务代码中写一段同步更新redis的代码。 这种数据同步的代码跟业务代码糅合在一起会不太优雅,能不能把这些数据同步的代码抽出来形成一个独立的模块呢,答案是可以的。 架构图canal是一个伪装成slave订阅mysql的binlog,实现数据同步的中间件。上一篇文章《canal入门》 我已经介绍了最简单的使用方法,也就是tcp模式。 实际上canal是支持直接发送到MQ的,目前最新版是支持主流的三种MQ:Kafka、RocketMQ、RabbitMQ。而canal的RabbitMQ模式目前是有一定的bug,所以一般使用Kafka或者RocketMQ。 本文使用Kafka,实现Redis与MySQL的数据同步。架构图如下: 通过架构图,我们很清晰就知道要用到的组件:MySQL、Canal、Kafka、ZooKeeper、Redis。 下面演示Kafka的搭建,MySQL搭建大家应该都会,ZooKeeper、Redis这些网上也有很多资料参考。 搭建Kafka首先在官网下
 2020-08-16   java  canal  kafka  mysql 
1…345678

搜索

Hexo Fluid
 总访问量 次   总访客数 人