12 2021 档案
摘要:
云原生时代又一代表作TiDB,具备HTAP也即是同时支持OLTP和OLAP,Pulsar设计相似采用存储与计算分离架构,本篇从TiDB与传统数据库的比较开始,了解应用场景和特性,进而进行部署和基础操作实践,了解整体架构、从存储、计算、调度了解TiDB的设计。
阅读全文

摘要:
本篇了解MongoDB和传统关系数据库和Elasticsearch,从而更深印象理解MongoDB的使用场景,也通过docker-compose编排技术完成MongoDB分片集群的部署,进一步学习容器化技术,通过Spring Boot整合MongoDB熟悉数据文档操作概念,最后通过分片设置案例了解MongoDB最为代表性的可扩展性。
阅读全文

摘要:
Tomcat作为Java技术栈最为熟悉、经典、最有代表性的Web容器,为了深入学习Tomcat优秀设计思想,先从Tomcat10.0.12源码编译开始,记录编译问题并解决,再手写一个简单Java Servlet内嵌Tomcat示例,从Tomcat配置文件窥探其底层设计如连接器、四大容器组件、管道等,非常清楚知道Tomcat全局实现功能,如果要手写一个简易Tomcat从Netty监听网络端口开始,待续。
阅读全文

摘要:
云原生时代作为程序猿心怀好奇学习了Kubernetes从此对其不再陌生,本篇以kubeadm方式快速部署3台服务器v1.22.1版本的K8S集群,从部署规划到部署步骤一步步详细记录和说明,遇到问题逐个解决,并练习K8S常用的命令,通过Nginx部署及其快速扩缩容、基于yaml文件部署、容器DNS功能,而关于K8Sconfigmap、secrets、有状态应用、高可用k8s集群、helm以及基于微服务集群容器编排部署后续补充
阅读全文

摘要:
当前Devops思想相当火热已经逐步渗透到企业实际运用当中,通过本篇完整学习你一定可以将CICD直接运用到学习或实际工作当中让周围同事、朋友对你另眼相看,构建一个基于容器化的CICD从Git提交源码后自动触发构建、打包、测试、部署到单个应用服务器Docker宿主机容器中运行,核心组件jenkins版本为2.306,容器化环境也可换为K8S或docker swarm
阅读全文

摘要:
如同JDK函数式、链式编程、Lambda表达式、Stream流编程,Docker也是Java技术栈开发人员必不可缺的一门容器化技术,本篇主要从Docker的由来开发,了解原理、常用命令以及容器卷技术,如何一步步写DockerFile,了解Docker网络以及Ngnix、ES集群的容器化部署实战入手。docker可以打包镜像发布实现一键运行,使用docker我们可以像搭积木一样增加一层层镜像实现,docker是内核级别的虚拟化,比虚拟机更少的抽象层,一台物理机上可以运行很多的容器示例,可以把服务器性能压榨到极致。
阅读全文

摘要:
本篇从Java定时器的基础理论原理开始首先认识大部分定时任务底层使用的算法如小顶堆和时间轮算法,并逐步从Jdk Timer、Jdk定时任务线程池、Spring Task、Quartz定时任务框架了解这边我们经常使用定时任务解决方案;分布式的系统存在分布式问题,底层基于Quartz的分布式调度ElasticJob正是用来解决分布式系统中常见的任务重复执行、任务负载均衡、统一任务调度、任务故障转移等,也提供了静态和动态创建定时任务代码示例
阅读全文

摘要:
Spring之所以能打败其他所有同类型Java开发框架屹立不倒的重要原因之一就是提供很多扩展点,让其他组件和框架很容易就整合到Spring框架里,所以也就诞生很多基于Spring的二次开发项目,接下来我们一起聊聊Spring提供的扩展点和一个Mybatis和Spring整合工程简易开发示例,充分认识Spring框架另一强大能力-扩展,Jdk动态代理及反射机制,借助FactoryBean特性,FactoryBean可以返回动态代理的对象及类型,通过ImportBeanDefinitionRegistrar通过Import注解将FactoryBean通过BeanDefinition注册到BeanDefinitionRegistry通过后续Bean的生命周期最终放到Spring的容器里。
阅读全文

摘要:
Kubernetes发展历史从公有云Iaas、Paas、Saas的云计算时代开始诞生,与Docker Swarm容器化集群和Apache Mesos分布式资源管理框架竞争并最终成为容器化编排主流引领者。本篇搭建实战K8s集群,初步了解k8s及简单命令,k8s进阶内容configmap、secrets、有状态应用、高可用k8s集群、helm以及基于微服务集群容器编排部署实战等后续再学习。Kubernetes是一个go语言开发(docker也是go语言开发,可见go语言的厉害和趋势,其兼具Python等动态语言的开发速度和 C/C++等编译型语言的性能与安全性,部署简单、并发性好、语言设计良好、执行性能高,后续我们专题学习)用于跨多个主机管理容器化应用程序的开放源代码系统。它为应用程序的部署、维护和扩展提供了基本机制。
阅读全文

摘要:
作为笔者见解,Spring Boot 不算是一个全新的框架,Spring Boot 底层还是大量依赖于Spring Framework,而Spring Framework很早以前版本就已提供基于注解、Java Config而不仅是XML配置编程;Spring Boot采用约定大于配置方式替代xml配置,是Spring Framework一个大升级版本,整合很多自动装配组件,让开发者开箱即用,接下来我们一起来学习下Spring Boot三个重要的特性和大名鼎鼎开箱即用starter开发简易剖析。
阅读全文

摘要:
Redis作为目前最主流缓存数据库毫无疑问独霸一方,使其作为大厂Java后台开发面试的必考点之一,本篇将剖析Redis为什么性能高和快的原因,Redis也是分布式锁的实现方案之一,此外还涉及到缓存预热、缓存穿透、缓存雪崩、缓存击穿、缓存更新、缓存降级等介绍。Redis常见使用场景:计数器、分布式ID生成器、海量数据统计bitmap、会话缓存、分布式阻塞队列、分布式锁、热点数据、社交需求好友推荐、延迟队列(sortset)等。Redis提供丰富的数据结构,如字符串、哈希、列表、集合、带范围查询、位图、超对数、地理空间索引和流的排序集。Redis具有内置的复制、Lua脚本、LRU驱逐、事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster的自动分区提供高可用性。
阅读全文

摘要:
将原理与实际操作经验相结合,本章不讲sql用法,主要针对的是开发人员需掌握的一些MySQL面试的知识点,涉及索引、事务、优化等方面,以及大厂SQL使用规约
阅读全文

摘要:
Apache Kafka是一个开源的分布式事件流平台,使用Scala和Java混合编写,Kafka最初由Linkedin公司开发,2011年贡献给了Apache基金会并成为顶级开源项目。消息队列就是用于数据生产方和消费方解耦合的中间件。顾名思义,主体就是一个队列的形式收集消息,数据在消费端按照FIFO的原则被消费。近几天连续学习两个Apache的开源项目,今天我们又来学习另外一个Apache顶级开源项目Kafka,可以见得Apache在开源世界的绝对大佬地位。Kafka是一个基于Zookeeper协调的支持分区(partition)、多副本(replica)的分布式消息系统,最大特性是可以实时处理大量数据以满足各种需求场景,常用于大数据场景消息流中间件;其他消息队列有ActiveMQ、RabbitMQ、ZeroMQ、MetaMQ、RocketMQ,目前比较主流消息中间件是Kafka、RocketMQ和RabbitMQ。
阅读全文

摘要:
今天我们又来学习一个Apache顶级项目Apache RocketMQ,RocketMQ由国人阿里团队采用Java语言开发和开源的,曾获得2016、2018中国最受欢迎的开源软件奖。RocketMQ凭借其强大的存储能力和强大的消息索引能力,以及各种类型消息和消息的特性脱颖而出。Apache RocketMQ官网地址及其GitHub都提供非常详细中文学习文档如Apache RocketMQ开发者指南等,学习起来可谓是非常之流畅、酸爽、so easy!让我们通过官网和及其GitHub来深入学习这个与时俱进非常优秀互联网主流的消息中间件。阿里早期是基于ActiveMQ 5的分布式消息传递中间件,随着队列和虚拟主题的增加ActiveMQ IO模块达到了瓶颈,当时也研讨过Kafka但当时的Kafka不能满足阿里的要求(特别是在低延迟和高可靠性方面),因此阿里决定自行研发一个消息中间件,从传统的发布/订阅场景到高容量的实时零损失容忍度事务系统,这就是RocketMQ诞生的原因。
阅读全文
