自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(196)
  • 收藏
  • 关注

原创 java9新特性

1 模块系统1.1 产生背景解决越来越臃肿的java运行环境,主要目的在于减少内存的开销,只须必要模块,而非全部jdk模块。每个公共类都可以被该项目中别的类访问,这样会导致使用了并不想访问的API本质上来讲,模块的概念是在package外再裹上一层,用模块来管理各个package的暴露和隐藏。使得代码组织上更安全1.2 具体用用项目结构如下1.2.1 模块提供方在src目录下添加module-info.java文件module demo { import com.demo;}

2022-03-24 16:44:01 526

原创 java8新特性

1 lambda表达式java8中引入了 -> 操作符,该操作符将表达式拆成了两部分:左侧:lambda表达式参数列表右侧:lambda需要执行的功能语法格式一:无参数,无返回值() -> System.out.println(“abc”);语法格式二:一个参数,无返回值(x) -> System.out.println(x);() 可以省略: x -> System.out.println(x);语法格式三:两个以上参数,有返回值,且lambda中有多

2022-03-13 11:53:05 405

原创 k8s学习十一-数据持久化

docker通过配置数据卷可以实现本地存储。1 nfs网络存储1.1 安装nfs服务端1 安装nfsyum install -y nfs-utils2 设置挂载路径vim /etc/exports挂载路径需要提前创建出来3 启动nfs服务systemctl start nfs1.2 客户端配置1 node 节点安装nfsyum install -y nfs-utils2 yaml文件配置nfs2 pv&pvcnfs实现持久化需要知道nfs服务端ip,ip地址暴露出

2022-01-03 18:17:21 457

原创 k8s学习十-helm

1 helm概述之前部署应用需要编写yaml文件,然后执行文件。这种方式部署少量的服务可以,但是如果部署几十个,上百个微服务需要维护大量yaml文件,特别不方便。通过helm可以解决如下问题把多个yaml作为一个整体管理实现yaml高效复用使用helm应用级别的版本管理helm是一个k8s的包管理工具,就像linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到k8s上2 相关概念helm:一个命令行客户端工具,主要用于 Kubernetes 应用 cha

2022-01-03 17:42:23 4452

原创 k8s学习九-ingress

1 Ingress概述在前面使用Service中的NodePort将服务端口号暴漏以供外部访问,这样显然会存在一些弊端:通过ip+端口的方式对外提供服务每个节点上都会其端口,访问时通过ip+端口进行访问每个端口对应一个应用服务但是在实际中是通过域名来访问应用的,根据域名跳转到不同端口服务中,所以需要在Service之上再添加一层访问入口,这一层就是Ingress。2 Ingress工作流程ingress和pod通过service进行关联,实际访问中ingress作为一个统一的入口,由se

2022-01-03 11:52:47 1469

原创 k8s学习八-安全机制

1 安全机制概述访问k8s集群的时候,需要经过三个步骤完成具体操作1 认证传输安全:对外不暴露8080端口,只能内部访问,对外使用6443端口,客户端认证常用方式:https证书认证,基于CA证书http token认证,通过token识别用户http基本认证,用户名+密码认证2 鉴权基于RBAC进行鉴权操作基于角色访问控制3 准入控制就是准入控制器的列表,如果列表中有请求内容则通过,没有则拒绝访问过程中,都需要经过apiserver,apiserver做统一协调。同时需

2022-01-02 22:13:41 3432

原创 k8s学习七-配置管理

1 SecretSecret可以加密数据存在etcd里,让Pod容器以挂载Volumn的方式进行访问1 yaml文件配置2 创建并查看pod3 以挂载方式进行访问以变量形式挂载1 编写yaml文件2 创建并查看pod3 测试以数据卷方式挂载1 编写yaml文件2 创建并查看pod3 测试2 ConfigMap用于存储非加密数据。通常用于配置文件1 查看并创建configMap2 挂载以数据卷的方式挂载1 编写yaml文件3 启动并查看pod

2022-01-02 20:35:34 290

原创 k8s学习六-核心技术~Service

1 Service存在意义1.1 防止pod失联(服务发现)pod每次启动后ip是不固定的,这样就会造成访问pod的ip频繁发生变化。引入Service后,Pod会先把ip地址注册到Service上。不再直接访问pod,而是访问Service的vip(虚拟ip),然后找到具体功能对应的ip,再用最新的ip进行访问。1.2 定义一组pod的访问策略(负载均衡)2 Pod和Service关系同Controller一样,也是通过label标签和selector选择器关联3 Service类型

2022-01-02 16:54:06 1342

原创 k8s学习五-核心技术~Controller

controller是在集群上管理和运行容器的对象,pod通过controller来实现应用的运维比如伸缩,滚动升级等。pod和controller之间通过label标签建立联系。1 deployment控制器1.1 应用场景部署无状态应用,如web服务、微服务管理Pod和ReplicaSet部署、滚动升级等功能1.2 部署应用1 导出yaml文件kubectl create deployment web --image=nginx --dry-run -o yaml > w

2022-01-02 16:16:09 2745

原创 k8s学习四-核心技术~Pod

1 Pod 概述Pod 是 k8s 系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在 k8s 上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展 Pod 对象功能的,比如控制器对象是用来管控 Pod 对象的,Service 或者Ingress 资源对象是用来暴露 Pod 引用对象的,PersistentVolume 资源对象是用来为 Pod 提供存储等等,k8s 不会直接处理容器,而是 Pod,Pod 是由一个或多个 container 组成Pod

2022-01-01 21:36:00 735

原创 k8s学习三-集群命令行工具 kubectl

kubectl 是 Kubernetes 集群的命令行工具,通过 kubectl 能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。1 命令语法kubectl 命令的语法如下kubectl [command] [type] [name] [flags]comand:指定要对资源执行的操作,例如 create、get、describe 和 deleteTYPE:指定资源类型,资源类型是大小写敏感的,开发者能够以单数、复数和缩略的 形式。例如:NAME:指定资源的名称,名称也大

2022-01-01 16:55:40 360

原创 k8s学习二-集群部署

1 前置知识点目前生产部署 Kubernetes 集群主要有两种方式:(1)kubeadmKubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes 集群。官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/(2)二进制包从 github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群。Kubeadm 降

2022-01-01 16:04:27 237

原创 k8s学习-k8s简介

1 k8s核心功能1.1 自动装箱基于容器对运行环境的资源配置要求自动部署容器1.2 自我修复容器失败时会对容器进行重启当所部属的node节点有问题时,会对容器进行重新部署或重新调度当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务1.3 水平扩展通过简单的命令,用户ui界面或基于CPU等资源的使用情况,对容器进行规模扩大或规模裁剪1.4 服务发现用户不需要使用额外的服务发现机制就可以基于k8s自身能力实现服务发现和负载均衡1.5 滚动更新可以根据应用变化,对应

2021-12-31 22:46:27 731

原创 docker学习-docker入门

1 docker简介docker是dotcloud公司开源的一个基于LXC的高级容器引擎,源代码托管在github上,基于go语言编写并遵从apache2.0协议开源,主要是基于PAAS平台为开发者提供服务容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源docker设想交付运行环境如同海运,OS如同一艘货轮,每一个在OS基础上的软件如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱内容可以用户自定义,也可以由专业人士制造2 与传统虚拟化的区别传统虚拟化技术

2021-12-12 20:41:54 1763

原创 虚拟化技术学习一-虚拟化概述

1 引入虚拟化的必要性美国环境保护署研究服务器和数据中心的能源效率时发现,实际上服务器只有5%的时间实在工作的,其他时间服务器一直在休眠状态引入虚拟化技术前每台主机只有一个操作系统软硬件紧密结合在同一个主机上运行多个应用程序通常会发生冲突(端口)系统资源利用率低硬件成本高昂且不够灵活引入虚拟化技术后打破操作系统和硬件的互相依赖通过封装到虚拟机的技术,管理操作系统和应用程序为单一的个体强大的安全和故障隔离虚拟机是独立于硬件的,它们能在任何硬件上运行2 虚拟化技术分类虚拟化

2021-12-11 23:20:57 919

原创 RocketMQ学习五-工作原理

1 消息的生产1.1 消息生产过程Producer可以将消息写入到某Broker中的某Queue中,其经历了如下过程:Producer发送消息之前,会先向NameServer发出获取消息Topic的路由信息的请求NameServer返回该Topic的路由表及Broker列表Producer根据代码中指定的Queue选择策略,从Queue列表中选出一个队列,用于后续存储消息Produer对消息做一些特殊处理,例如,消息本身超过4M,则会对其进行压缩Producer向选择出的Queue所在的Br

2021-12-05 23:53:35 924

原创 RocketMQ学习四-集群部署

1 集群部署理论1.1 数据复制与刷盘策略1.1.1 复制策略复制策略是broker的master与slave间的数据同步方式,分为同步复制和异步复制同步复制:消息写入master后,master会等slave同步数据成功后才向procedure返回ACK异步复制:消息写入master后,master会直接向procedure返回ACK,无需等待slave同步完成1.1.2 刷盘策略刷盘策略是broker中的消息落盘方式,即消息发送到broker内存后消息持久化到磁盘的方式,分为同步刷盘

2021-12-05 19:47:03 1572

原创 RocketMQ学习三-java代码应用

1 消息发送分类1.1 普通消息1.1.1 同步发送原理同步发送是指消息发送方发出一条消息后,会在收到服务端返回响应之后才发下一条消息的通讯方式。测试代码 public static void main(String[] args) throws MQClientException, RemotingException, InterruptedException, MQBrokerException { // procedureGroup全局唯一 St

2021-12-04 13:24:04 1054

原创 RocketMQ学习二-控制台操作

1 启动命令启动nameservernohup sh mqnamesrv &启动brokernohup sh mqbroker -n localhost:9876 &关闭nameserversh bin/mqshutdown namesrv关闭brokersh bin/mqshutdown broker2 控制台使用https://github.com/apache/rocketmq-externals下载,解压出rocketmq-console配置src/mai

2021-12-04 11:31:12 347

原创 RocketMQ学习一-RocketMQ简介

1 基本概念1.1 消息(Message)消息是指,消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。1.2 主题(Topic)Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。 topic:message 1:n message:topic 1:1一个生产者可以同时发送多种Topic的消息;而一个消费者只对某种特定的Topic感兴趣,即只可以订阅和消费一种Topic的消息。 producer

2021-12-01 23:57:10 2172 2

原创 分布式事务-seata

1 seata简介1.1 概述Seata是阿里开源的分布式事务解决方案中间件,对业务侵入小,在应用中Seata整体事务逻辑基于两阶段提交的模型,核心概念包含三个角色:TC-事务协调者,维护全局和分支事务状态,驱动全局事务提交或回滚TM-事务管理器,定义全局事务的范围,提交或回滚全局事务RM-资源管理器,管理分支事务处理的资源,与TC交谈已注册事务报告和分支事务处理状态,并驱动分支事务提交或回滚1.2 三种模式1.2.1 AT 模式AT 模式是一种无侵入的分布式事务解决方案。在 AT 模式

2021-11-28 14:55:26 585

原创 redis学习十-分布式锁

1 手写分布式锁1.1 定义注解@Target(value={ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface DistributeLock { /** * lock key */ String key(); /** * expire time */ long expire(); /** * every thread max try times */ int tr

2021-11-24 00:06:12 891

原创 spring-cloud学习八-sentinel

1 Sentinel简介Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。2 入门案例下载sentinel和nacos后本地启动2.1 maven配置 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-n

2021-11-20 18:49:14 574

原创 spring-cloud学习七-nacos

1 nacos注册中心网上下载nacos,本地启动即可1.1 maven配置文件 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>1.

2021-11-20 00:00:11 510 2

原创 spring-cloud学习六-gateway网关

1 gateway概述1.1 gateway简介SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2

2021-11-13 00:00:42 421

原创 zookeeper学习七-分布式计数器&分布式屏障

1 分布式计数器 @Test public void testDistributedAtomicInteger() throws Exception { DistributedAtomicInteger atomicInteger = new DistributedAtomicInteger(curatorFramework, Constant.ROOT_PATH, new RetryNTimes(3, 1000));

2021-05-03 02:19:58 272

原创 zookeeper学习六-主节点选举及宕机重选

1 创建一个leader选择器package com.jms.zookeeper;import lombok.Data;import org.apache.curator.framework.CuratorFramework;import org.apache.curator.framework.recipes.cache.ChildData;import org.apache.curator.framework.recipes.cache.PathChildrenCache;import

2021-05-03 02:14:27 634

原创 zookeeper学习五-zookeeper实现分布式锁

1 手写分布式锁根据ZK简介一文中描述的步骤,我们来手动实现分布式锁package com.jms.zookeeper; import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooDefs;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.data...

2021-05-03 00:43:21 227

原创 zookeeper学习四-Curator客户端

1Curator客户端简介curator是netflix公司开源的一个zk客户端,后捐赠给apache。curator框架在原生的zk api上进行了封装,隐藏了很多zookeeper客户端底层的细节,提供了zookeeper各种应用场景(分布式锁、集群领导选举、共享计数器、缓存机制、分布式队列)的抽象封装,实现了链式风格编码,是最流行的zookeeper客户端原生zookeeper不足连接对象异步,需要开发人员自己编写代码阻塞等待 连接没有自动重连机制 watcher注册后只生效一次 .

2021-05-02 02:09:59 325

原创 zookeeper学习三-ZAB协议

1 ZAB协议是什么Zab协议 的全称是Zookeeper Atomic Broadcast(Zookeeper原子广播),Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性分布式系统中一般都要使用主从系统架构模型,指的是一台leader服务器负责外部客户端的写请求。然后其他的都是follower服务器。leader服务器将客户端的写操作数据同步到所有的follower节点中。就这样,客户端发送来的写请求,全部给Leader,然后leader再转给Follower。这时..

2021-05-02 00:07:31 208 2

原创 zookeeper学习二-ZK客户端

1 常用的shell命令1.1 创建节点create [-s] [-e] path data-s 有序节点-e 临时节点1.2 更新节点set data path [v]v 版本,乐观锁机制,如果版本号不匹配则拒绝修改1.3 删除节点delete path [v]1.4 查看节点1.4.1 查看节点信息get path1.4.2 查看节点状态stat path1.4.3 查看节点列表ls/ls2 path后者是前者的增强,不仅可以查看指定.

2021-05-01 18:44:07 409

原创 zookeeper学习一-ZK简介

1 ZK是什么ZK是由雅虎研究院开发,后托管到apache,2010.11正式成为apache的顶级项目大数据生态系统里很多组件命名都是某种昆虫或动物,zookeeper即动物园管理员,是大数据生态系统各个组件的管理者2 ZK应用场景zookeeper是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供一个高性能、高可用、且具有严格顺序访问控制能力的分布式协调存储服务维护配置信息 分布式锁 集群管理 生成分布式唯一id2.1 维护配置信息java项目通常有些配置项如数

2021-05-01 11:22:41 2635

原创 elasticsearch学习七-ES面试题

1为什么要使用Elasticsearch?系统中的数据,随着业务的发展,时间的推移,将会非常多,而业务中往往采用模糊查询进行数据的搜索,而模糊查询会导致查询引擎放弃索引,导致系统查询数据时都是全表扫描,在百万级别的数据库中,查询效率是非常低下的,而我们使用ES做一个全文索引,将经常查询的系统功能的某些字段,比如说电商系统的商品表中商品名,描述、价格还有id这些字段我们放入ES索引库里,可以提高查询速度。2Elasticsearch的master选举流程?Elasticsearch的选主是Ze..

2021-04-18 11:31:27 697

原创 elasticsearch学习六-ES优化

1硬件选择Elasticsearch的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件../config/elasticsearch.yml中配置,如下:#----------------------------------- Paths ------------------------------------## Path to directory where to store the data (separate multiple loca.

2021-04-18 11:13:50 746

原创 elasticsearch学习五-ES集成

1 Spring Data框架集成1.1 Spring Data框架介绍Spring Data是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。 Spring Data可以极大的简化JPA(Elasticsearch…)的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。Spring Data的官网:https://spr

2021-04-18 11:03:21 479 2

原创 elasticsearch学习四-ES原理

1 核心概念1.1 索引(Index)一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以定义任意多的索引。能搜索的数据必须索引,这样的好处是可以提高查询速度,比如:新华字典前面的目录就是索引的意思,目录可以提高查询速度。Elasticsearch索引的精髓:一切设计都

2021-04-15 00:35:12 339

原创 elasticsearch学习三-ES集群部署

1 相关概念1.1单机 & 集群单台Elasticsearch服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集群中。除了负载能力,单点服务器也存在其他问题:单台机器存储容量有限 单服务器容易出现单点故障,无法实现高可用 单服务的并发处理能力有限配置服务器集群时,集群中节点数量没有限制,大于等于2个节点就可以看做是集群了。一般出于高性能及高可用方面来考虑集群中节点数量都是3个以上。1.2集群..

2021-04-14 23:23:30 349

原创 elasticsearch学习二-javaAPI

1 获取client&对象解析方法 private static RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"))); private static List<User> parseUser(SearchHits hits) { List<User

2021-04-11 21:41:59 245

原创 elasticsearch学习一-ES入门

1 ES简介1.1 ES技术栈The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。Elaticsearch,简称为ES, ES是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。1.2 全文搜

2021-04-11 14:47:34 500

原创 内存缓存-caffeine

1 快速入门案例maven依赖<dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.8.4</version></dependency>1.1 构建cache工具类public enum LoadTypeEnu

2021-02-23 19:56:39 947 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除