架构之路
aa1215018028
这个作者很懒,什么都没留下…
展开
-
RunTime.getRunTime().addShutdownHook优雅关闭线程池
有时候我们用到的程序不一定总是在JVM里面驻守,可能调用完就不用了,释放资源.RunTime.getRunTime().addShutdownHook的作用就是在JVM销毁前执行的一个线程.当然这个线程依然要自己写.利用这个性质,如果我们之前定义了一系列的线程池供程序本身使用,那么就可以在这个最后执行的线程中把这些线程池优雅的关闭掉.比如我们定义了一个线程池private Exe...原创 2019-09-16 18:50:24 · 329 阅读 · 0 评论 -
阿里专家:讲述支付宝内部架构剖析
支付宝系统架构概况大数据典型处理默认大数据财务会计大数据支付清算大数据核算中心大数据易大数据柔性事务支付宝的开源分布式消息中间件Metamorphosis (MetaQ) 是一个高性能、高可用、可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写、吞吐量大和支持本地和XA事务...原创 2018-10-08 19:58:51 · 1243 阅读 · 0 评论 -
java并发编程之线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? ...原创 2018-09-22 15:34:50 · 204 阅读 · 0 评论 -
Springg整合Redis详细步骤+实例
这几天,在学习Redis,关于Redis的好处网上有很多的介绍,我不做太多赘述,作为开发人员,首先关心的是怎么用,如何整合到我们的Spring框架中。这里面我简单的将Redis整合到Spring框架,并且做存,取的功能。好了,下面来步骤吧。第一步:安装Redis数据库。我直接从同事那里要了一个免安装的包。直接在电脑里面启动打开的。怎么装Redis,网上有教程。第二步:在Spring配置Red...原创 2018-09-27 09:45:49 · 1643 阅读 · 2 评论 -
Spring与ActiveMQ整合(多线程并发发送与接收消息)
本文博客介绍生产者和消费者方都使用多线程技术并发发送和接收消息。1.生产者创建固定线程数3的线程池,且发送方开启了四个线程任务。package com.spring.thread.jms;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Exe...原创 2018-09-26 14:11:19 · 1495 阅读 · 0 评论 -
Spring中Bean和配置和注入详解
1 bean与spring容器的关系Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载、实例化Bean,并建立Bean和Bean的依赖关系,最后将这些准备就绪的Bean放到Bean缓存池中,以供外层的应用程序进行调用。1 bean配置bean配置有三种方法:基于xml配置Bean ...原创 2018-09-26 12:06:29 · 272 阅读 · 0 评论 -
Spring整合ActiveMQ
在实际的项目中如果使用原生的ActiveMQ API开发会比较麻烦,因为需要创建连接工厂,创建连接等,我们应该使用一个模板来做这些繁琐的事情,Spring帮我们做了!Spring提供了对JMS的支持,需要添加Spring支持jms的包,如下:<dependency> <groupId>org.springframework</groupId>...原创 2018-09-25 18:05:26 · 184 阅读 · 0 评论 -
ActiveMQ集群搭建详解
ActiveMQ的集群 内嵌代理所引发的问题:消息过载 管理混乱如何解决这些问题——集群的两种方式:Master slave Broker clustersActiveMQ的集群有两种方式: MASTER/SLAVE模式 Cluster模式 Pure Master Slave Pure master slave的工作方式: ...原创 2018-09-14 12:13:20 · 4860 阅读 · 0 评论 -
Spring集成Redis
spring集成redisredis是一种非关系型数据库,与mongoDB不同的是redis是内存数据库,所以访问速度很快。常用作缓存和发布-订阅式的消息队列。redis官方没有提供windows版本的软件。windows版本一直是微软维护的。下载地址:https://github.com/MSOpenTech/redis/releases。这里是redis相关的教程。http://m...原创 2018-10-16 15:02:17 · 144 阅读 · 0 评论 -
深入理解Spring Redis的使用 (一)、Spring Redis基本使用
关于spring redis框架的使用,网上的例子很多很多。但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么优秀的一个框架。这里,我们就对比之前对spring orm中对hibernate的使用,来理解使用spring redis的使用。(本文章不做redis基本命令使用的讲解)1. Redis使用场景...原创 2018-10-16 19:35:53 · 261 阅读 · 0 评论 -
Californium 开源框架分析
引言物联网时代,所有设备都可以接入我们的互联网。想想看只要有一台智能手机,就可以操控所有的设备,也可以获取到所有设备采集的信息。不过,并不是所有设备都支持HTTP协议的,而且让设备支持HTTP协议也不现实,因为对于设备来说,这个协议太重了,会消耗大量的带宽和电量。于是CoAP协议也就运应而生了,我们可以把它看为超简化版的HTTP协议。而Californium框架,就是对CoAP协议的Java实...原创 2018-10-31 11:56:13 · 1643 阅读 · 1 评论 -
TCP的状态转换及生产问题实操
前文本号介绍了TCP协议主要的流程,包括建立连接、传输数据和断开连接。如果大家认真阅读了附图,应该可以看到在各个流程中套接字的状态是在不断变化的,不同的状态标识了套集字所处的阶段。如图1是TCP一个完整的状态转换图,图中包含了套接字的所有状态,以及发生状态转变的触发条件。可能会有人问,了解这些状态有什么用呢?我们平时编程又用不到。图1 TCP状态转换图为了说明上述问题,我们从3个角度进...原创 2019-07-27 17:05:14 · 207 阅读 · 0 评论 -
TCP协议状态转换详解
、三次握手和四次挥手1、建立连接(三次握手) (1)服务器会处于listen状态,客户端发送一个带SYN标志的TCP报文到服务器。 (2)服务器端回应客户端的请求,这是三次握手中的第2个报文,这个报文同时带SYN标志和ACK标志。 因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。 (3)客户必须再次...原创 2019-08-05 15:46:39 · 1902 阅读 · 1 评论 -
Java 8 Stream Tutorial
本文采用实例驱动的方式,对JAVA8的stream API进行一个深入的介绍。虽然JAVA8中的stream API与JAVA I/O中的InputStream和OutputStream在名字上比较类似,但是其实是另外一个东西,Stream API是JAVA函数式编程中的一个重要组成部分。本文描述如何使用JAVA8的Stream API。通过本文,你可以了解Stream API的执行顺序,不同...原创 2019-05-06 14:23:34 · 207 阅读 · 0 评论 -
Grafana ES监控指标
安装监控插件项目地址:https://github.com/justwatchcom/elasticsearch_exporter插件下载地址:https://github.com/justwatchcom/elasticsearch_exporter/releases/download/v1.0.4rc1/elasticsearch_exporter-1.0.4rc1.linux-amd64...原创 2019-02-11 16:18:43 · 5028 阅读 · 0 评论 -
logstash-input-mysql 全量和增量同步到ES
1、数据同步方式全量同步与增量同步全量同步是指全部将数据同步到es,通常是刚建立es,第一次同步时使用。增量同步是指将后续的更新、插入记录同步到es。2、常用的一些ES同步方法1)、 elasticsearch-jdbc : 严格意义上它已经不是第三方插件。已经成为独立的第三方工具。不支持5.5.1。。。2)、elasticsearch-river-mysql插件: https...原创 2019-01-31 17:49:56 · 4557 阅读 · 0 评论 -
raft 和 paxos
Raft协议比paxos的优点是 容易理解,容易实现。它强化了leader的地位,把整个协议可以清楚的分割成两个部分,并利用日志的连续性做了一些简化:(1)Leader在时。由Leader向Follower同步日志(2)Leader挂掉了,选一个新Leader,Leader选举算法。但是本质上来说,它容易的地方在于流程清晰,描述更清晰,关键之处都给出了伪代码级别的描述,可以直接用于实现,而p...原创 2019-01-06 22:06:05 · 241 阅读 · 0 评论 -
win10安装gradle
一、下载Gradle可以去这个地址:http://services.gradle.org/distributions找到最新的版本进行安装.我下的是:gradle-3.1-bin.zip 二、安装注意:在安装Gradle之前要先安装JDK,安装了把下载下来的压缩包解压到一个目录,例我解压到D盘, 接下来就是配置环境变量新建环境变量名GRADLE_...原创 2019-01-06 11:48:17 · 1416 阅读 · 0 评论 -
Centos挂载第二块硬盘
作为一个初创小公司的架构师,工作内容纷繁复杂,涉及了系统管理员、数据库管理员、架构师、高级软件工程师、项目经理的部分。 今天的任务是安装公司的服务器,使用centos6.7。安装过程就不用细讲了。安装好之后,发现我们的服务器是有两块1TB的硬盘的,但是系统里面的磁盘容量只有1TB。第二块硬盘没有被挂载,这个就需要手动处理了。 1. 查看没有挂载的硬盘可以使用fdisk -l命令...原创 2018-09-18 15:08:18 · 822 阅读 · 0 评论 -
微服务技术架构、监控、Docker、服务治理等体系
1.什么是微服务1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可)2)独立的进程(java的tomcat,nodejs等)3)轻量级的通信(不是soap,是http协议)4)基于业务能力(类似用户服务,商品服务等等)5)独立部署(迭代速度快)6)无集中式管理(无须统一技术栈,可以根据不同的服务或者团队进行灵活选择)2. 怎么权衡微服务的利...原创 2018-09-06 11:35:20 · 4981 阅读 · 0 评论 -
阿里巴巴代码规约插件使用
阿里巴巴基于《阿里巴巴Java开发手册》内容,研发了一套自动化的IDE检测插件(IDEA、Eclipse)。该插件在扫描代码后,将不符合规约的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。下面,记录了idea上如何使用此插件的步骤:1.idea安装步骤File-...原创 2018-08-28 14:37:25 · 499 阅读 · 0 评论 -
2018 Java 后端工程师的书单推荐
书籍列表提升自己 好程序员就是我,我就是隔壁老王。《数据库实体设计》正在连载中……《精尽 Dubbo 解析》正在连载中……《Effective Java 中文版》豆瓣评分:9.1【1235 人评价】 推荐理由:本书介绍了在Java编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。 友情提示:同推荐《重构 : 改善既有代码的...原创 2018-07-19 09:20:30 · 1681 阅读 · 0 评论 -
面试中并发类问题的准备和学习
主题 又到面试季了,从课程的学习群里,看到许多同学分享了自己的面试题目,我也抽空在网上搜索了一些许多公司使用的面试题,目前校招和社招的面试题基本都集中在几个大方向上,主要是:Java基础、并发、JVM、算法、数据库、一些框架、分布式集群 等。这里呢,单独就面试中的并发类问题的准备和学习发表一下个人的见解。 现状 关于对并发的学习和理解,通过和许多学员沟通及大家在学习群里的反...原创 2018-07-18 08:49:31 · 200 阅读 · 0 评论 -
mysql 索引类型以及使用场景
关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。还是以WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表中针对5个字段设计了B...原创 2018-07-10 10:44:11 · 13049 阅读 · 2 评论 -
数据序列化-hessian2
使用hessian2协议,也就是传输对象序列化,它是二进制的RPC协议,与RMI不同的是,以标准的二进制格式定义请求的信息(请求的对象、方法、参数等),可以跨语言通讯,而RMI只局限于java间通讯。1.hessian2原理java-hessian2自定义的类使用默认的序列化类com.caucho.hessian.io.JavaSerializer(Class, ClassLoader)接口Ser...原创 2018-07-03 10:24:05 · 2392 阅读 · 0 评论 -
UDT协议详解
基于UDP的数据传输协议(UDP-based Data Transfer Protocol,简称UDT)是一种互联网数据传输协议。UDT的主要目的是支持高速广域网上的海量数据传输,而互联网上的标准数据传输协议TCP在高带宽长距离网络上性能很差。 顾名思义,UDT建于UDP之上,并引入新的拥塞控制和数据可靠性控制机制。UDT是面向连接的双向的应用层协议。它同时支持可靠的数据流传输和部分可靠的数据报传...原创 2018-07-04 20:29:20 · 1961 阅读 · 0 评论 -
谈谈幂等机制
一、什么是幂等性? 幂等性(Idempotence)。在HTTP/1.1规范中幂等性的定义是: Methods can also have the property of “idempotence” in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is...原创 2018-06-30 14:37:42 · 1567 阅读 · 0 评论 -
Jenkins安装并进行Maven项目自动化部署
下载Jenkins jenkins.msi软件安装,基本傻瓜式下一步下一步即可。下载地址:https://jenkins.io/download/ 启动Jenkins 安装完会自动启动并打开浏览器,或者去服务[services.msc]里面启动停止都可以哦 安装Jenkins 密码填写 浏览器输入http:localhost:8080 即可。默认端口是8080 可以看到给出了密码所在目录 复...原创 2018-06-30 14:35:07 · 6820 阅读 · 0 评论 -
【NIO系列】——之TCP探秘
很开心,上半年发布的spring boot 2中,默认的web 容器是netty ,这说明“反应式” 容器已经是大势所趋,无论是go 语言的协从线程,还是java 基于reactor 线程模型,都是基于事件编程实现高并发的实例。这周开始我会讲关于NiO的一切,底层原理是什么,应用架构有哪些,如何利用其优势构建高性能服务器,欢迎关注。 在介绍NIO之前有必要了解下TCP协议,因为目前多数应用都...原创 2018-06-30 14:21:36 · 635 阅读 · 0 评论 -
ETCD原理详细解析
从etcd的架构开始,深入到源码中解析etcd 1 架构从etcd的架构图中我们可以看到,etcd主要分为四个部分。HTTP Server: 用于处理用户发送的API请求以及其它etcd节点的同步与心跳信息请求。 Store:用于处理etcd支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是etcd对用户提供的大多数API功能的具体实现...原创 2018-07-19 15:34:18 · 14020 阅读 · 0 评论 -
缓存与数据库不一致
缓存与数据库的操作时序,不管是《Cache Aside Pattern》中的方案,还是《究竟先操作缓存,还是数据库?》中的方案,都会遇到缓存与数据库不一致的问题。今天聊聊这个问题。 一、数据库主从不一致先回顾下,无缓存时,数据库主从不一致问题。如上图,发生的场景是,写后立刻读:(1)主库一个写请求(主从没同步完成)(2)从库接着一个读请求,读到了旧数据(3)最后,主从同步完成 导致的结果是:主动同...原创 2018-07-14 10:15:41 · 1005 阅读 · 0 评论 -
微服务架构-分布式事务详解
根据微服务架构的鼻祖 Martin Fowler 的忠告,微服务架构中应当尽量避免分布式事务。然而,在某些领域,分布式事务如同宿命中的对手无法避免。在工程领域,分布式事务的讨论主要聚焦于强一致性和最终一致性的解决方案。典型方案包括:两阶段提交(2PC, Two-phase Commit)方案。 eBay 事件队列方案。 TCC 补偿模式。 缓存数据最终一致性。一致性理论分布...原创 2018-07-22 20:11:53 · 2295 阅读 · 0 评论 -
常用物联网应用协议汇总
本文罗列下市面上物联网通信中的各类消息技术-即工作在网络通信的应用层协议,总结下它们各自特点、特定的物联网应用场景等。这类协议都直接用于在无线或有线网络环境下的设备之间、人与设备之间的通信,物联网开发者都会与这些协议打交道。物联网联接的问题空间上图为物联网联接的问题空间,其中物联网的通信环境有Ethernet, Wi-Fi, RFID, NFC(近距离无线通信), Zigbee, ...原创 2018-08-20 14:00:24 · 756 阅读 · 0 评论 -
JMX超详细解读
一、JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。这是官方文档上的定义,我看过很多次也无法很好的理解。我个人的理解是JMX让程序有被管理的功能,例如你开发一个WEB网站,它是在24小时不间断运行,那么你肯定会对网站进行监控,如...原创 2018-08-17 11:28:25 · 632 阅读 · 0 评论 -
JVM性能监控工具-Jvisualvm
用法:Jvisualvm是JDK自带的一款性能分析工具使用方式:1.配置好JDK环境变量1.本地JVM监控略2.远程JVM监控 用JMX对Resin内存状态进行监控 ,可以看到本地所有可监控的JVM实例。原理就是通过添加一些JMX相关的JVM启动参数来控制JMX的行为,例如端口,验证信息等。Resin3.1.X版本的配置文件中有一些设置JVM a...原创 2018-08-17 10:51:32 · 948 阅读 · 0 评论 -
Go 语言开发必须知道的 17 种利器
本期为大家精选了码云上优秀的 Go 语言开源项目,涵盖了文件服务系统、Web 开发框架、游戏服务器开发框架、API 工具、验证码、数据库、爬虫工具、端口转发工具等各个方面,希望能够给大家带来一点帮助:)1、项目名称:分布式文件服务项目简介:golang 基于 gridFs 的分布式文件服务,其支持:POST GET 上传 图片大小控制 文件下载,秒传,转正处理等。项目地址:htt...原创 2018-08-15 11:33:21 · 8230 阅读 · 0 评论 -
微服务之熔断、降级、限流
伴随着微服务架构被宣传得如火如荼,一些概念也被推到了我们面前(管你接受不接受),其实大多数概念以前就有,但很少被提的这么频繁(现在好像不提及都不好意思交流了)。想起有人总结的一句话,微服务架构的特点就是:“一解释就懂,一问就不知,一讨论就吵架”。服务熔断在介绍熔断机制之前,我们需要了解微服务的雪崩效应。在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服务可...原创 2018-08-15 11:11:21 · 28162 阅读 · 0 评论 -
分布式锁的实现方式
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致...原创 2018-07-22 20:17:08 · 338 阅读 · 0 评论 -
2PC/3PC到底是啥
讨论提到2PC/3PC首先想到的是它是一致性协议,而且经常把它和Paxos协议放在一起比较,并且经常看到这样的说法"世上只有一种一致性算法,那就是Paxos",2PC/3PC并不是严格意义上的一致性协议,很少被用在处理一致性上;但另一方面又经常看到2PC/3PC和分布式事务放在一起讨论,并且大部分的关系型数据库通过两阶段提交(2 Phase Commit 2PC)算法来完成分布式事务。先大...原创 2018-07-22 20:15:21 · 7931 阅读 · 0 评论 -
微服务--分布式事务的实现方法及替代方案
概念澄清事务补偿机制: 在事务链中的任何一个正向事务操作, 都必须存在一个完全符合回滚规则的可逆事务.CAP理论: CAP(Consistency, Availability, Partition Tolerance), 阐述了一个分布式系统的三个主要方面, 只能同时择其二进行实现. 常见的有CP系统, AP系统.幂等性: 简单的说, 业务操作支持重试, 不会产生不利影响. 常见的实现...原创 2018-07-22 20:13:38 · 193 阅读 · 0 评论