7 云水之路

尚未进行身份认证

技术控

等级
博文 136
排名 9k+

Eureka源码分析-环境构建篇

      承接上一篇文章《什么是微服务》,我们已经对微服务有一定了解,并且以一个实现了注册中心、服务提供者及消费者的例子作为文章的结尾,而本篇文章,主要介绍Eureka源代码的环境构建及示例调试。  环境构建 调试方式 运行原理 示例调试   一、环境构建学习一门新技术的原理和根本,最好的方式就是研究它的源代码,搞懂它是如何诞生的,同时,也考虑下为什么这样去设...

2018-10-23 12:56:47

什么是微服务?

什么是微服务?       很高兴与各位读者朋友见面,本篇内容是微服务系列的首篇文章,也是本人后期撰写原创微服务架构文章的开始,希望自己的一些经验分享,能够助力于各位读者朋友在微服务架构之路上顺风顺水。作为首篇文章,我会以最为基础的概念为开始,介绍下什么是微服务及其与SOA服务架构的异同;然后,会以一个整体的微服务架构图及详解作为第二部分内容;最后,会搭建一个基础入门的注册中心(HA)...

2018-10-15 11:11:00

RPC远程协议之Thrift非阻塞多线程处理

RPC远程协议之Thrift非阻塞多线程处理 在上一篇文章《RPC远程协议之Thrift入门》中,我已经介绍了Thrift的基本使用,并举例验证了如何使用,当然这个例子是阻塞单线程的模式,实际客户端请求增多,单线程处理时间变长时,无可厚非就会卡顿延迟,所以需要实现非阻塞多线程的通信模式,而Thrift已经想到,并且为我们提供好了几种Server的实现方式,以供在实际业务需求下做出合适的选择。本篇文...

2018-03-06 17:25:37

RPC远程协议之Thrift入门

RPC远程协议之Thrift入门 在上一篇文章《RPC远程协议之原理分析》中,我介绍了RPC的工作原理及欲实现RPC框架功能应该做哪些事情,因为要做的事情太多,完全由开发人员研发实现,不是很现实,所以市面上出现了诸多RPC快捷框架,目前主流的有Facebook的Thrift、谷歌的gRPC,以及Dubbo,但就性能角度考虑,Thrift相对好些,并且是跨语言的,所以这里先以Thrift的介绍开始。...

2018-03-03 20:21:47

RPC远程协议之原理分析

RPC远程协议之原理分析 在近几年工作中发现,功能服务化或微服务化越来越流行,逐渐成为实现中大型分布式系统架构的主要方式,而在分布式系统中的不同节点应用间的通信中,RPC远程协议扮演关键作用。实际上,在日常工作中,我们也多多少少使用过RPC协议方案,对于初级的程序员来说,RPC显得很神秘,而经验丰富些的程序员虽可使用,但对其工作原理理解的并不是很深刻,往往会误用,这里就我理解来详细介绍下。  l ...

2018-03-02 17:07:33

Spring整合Hibernate实现Spring Data JPA

Spring整合Hibernate实现SpringDataJPA在上一篇文章《Spring整合Hibernate实现JPA持久化》中,我们已经介绍了怎样在Spring容器中合理地集成Hibernate来实现JPA的ORM机制。但是,细心的读者会发现,上一篇文章中使用了EntityManager来直接与数据库交互,存在这一定的耦合度,更重要的是每当新增或修改新的实体Entity的管理时,都需要重复的实现EntityManager在Dao层的逻辑,有些过于模版化,重复劳动的问题存在,所以这篇文章就来介绍

2017-11-24 15:11:15

Spring整合Hibernate实现JPA持久化

Spring整合Hibernate实现JPA持久化本篇文章主要介绍Spring如何集成JPA的功能,并实现基本的CURD操作。JPA,全称为JavaPersistenceAPI,诞生与EJB2实体Bean之上,是一种新的Java持久化标准,也是基于POJO的持久化机制,它的设计灵感来源于Hibernate和Java数据对象(JDO)。 Maven管理软包依赖 配置实体管理器工厂 用JPA方式实现CURD

2017-11-21 13:28:25

Spring整合JMS异步消息

Spring整合JMS异步消息在应用程序之间通信的消息,可分为同步消息和异步消息两种。前者就是当请求的程序端发出请求后,一直处于等待状态(阻塞),直到接收请求方反馈正确的结果后,请求方才能继续往下执行。而异步消息,则请求的程序端发出请求后,则可以继续向下执行,不需要阻塞当前流程,很多时候大大提高了用户的即时体验。当然,选择同步还是异步形式的通信,全凭应用的场景而做出合理的选择,比如:针对用户的即时操作要求较高的功能,则建议采用异步通信;而例如工作流或对即时性要求不高的功能实现,则可采用同步

2017-11-03 12:00:22

Nginx地址重定向使用

Nginx地址重定向使用在使用Nginx作为服务器时,经常遇到的需求就是对地址进行重定向(301重定向),而重定向可以解决很多服务器应用需求,而且Nginx实现这一切都比较简单。那么,我们常见的重定向有哪些?这里我就罗列几个常见的需求:http重定向到https、www自动补全、redirect对https的支持及动静访问分离。当然,也有很多人在使用rewrite重写地址实现重定向,但在这里并不推荐,因为它在不同的Nginx版本是有缺别的,而301是推荐使用的,因为它是http/https通信协议的标准,

2017-09-23 11:13:53

Nginx的CA证书使用总结

Nginx的CA证书使用总结今天给大家介绍下,在Nginx作为服务器时,网站的CA证书怎么添加?我们都知道,http方式通信是非常常见的,常用在对安全要求不高的站点的交互访问,那么对于有交易或存在敏感信息的网站,就需要我们使用http的另一变体https来替代,因为它基于http协议,并添加的ssl的安全处理,所以网站的交互数据是经过加密的,较安全,具体实现过程如下所示。

2017-09-08 14:38:17

网站优化篇

网站优化篇最近公司要大力推广官方网站,但是发现不论是PC网站还是手机网站的打开响应速度都比较卡顿,而每个人都知道官方网站,一般是企业对外用户打造品牌,进行宣传的第一道门,如果用户访问网站时遇到了卡顿,很多用户会选择拒绝入门,这是个大问题,所以就这个问题,我做了相关的调研和实践,已达到我们这期的要求效果。那么接下来就介绍下,优化网站的步骤及方法,供有需要的人参考。

2017-09-01 12:37:53

分布式架构设计之Rest API版本管理

分布式架构设计之RestAPI版本管理:随着互联网发展脚步的加快,产品项目的迭代也随之加快,所以就需要我们对产品的稳定提供一定的保障。而直接与用户接触的前端应用一般都是通过接口API与后台交互,一旦相关的API需求改版后,原来的API就不能使用,需要重新发布更新,如果前端产品是移动APP应用,比如:android/ios,那么就必须重新提交应用审核,等待若干天的审核发布是很不好的,严重影响用户的使用,所以建立API版本,使新改版的接口API不影响老版本的API使用,就显得很有必要了,那么接下来就介绍下。

2017-08-26 19:50:06

分布式架构设计之Rest API HAL

分布式架构设计之RestAPIHAL在上一篇文章《分布式架构设计之RestAPI》中,我对什么是Rest进行了详细的介绍,同时以书本的CRUD为例,实现了RestAPI的基本操作。但是细心的读者可能会发现,所有接口返回的数据格式并不统一,没有一定的规范性,更重要的是接口通信的内容并未很明确地体现“资源”的概念,所以在这篇文章就来介绍下现在流行的HAL风格的数据格式,需要提及的是:HAL(HypertextApplicationLanguage)是一种API数据格式风格,同时也能规范接口通信内

2017-08-15 16:06:18

分布式架构设计之Rest API

近几年,以资源为中心的表述性状态转移(RepresentationalStateTransfer,REST)越来越受欢迎,它完美地替代了传统的基于SOAP的Web服务方案,同时它关注的是数据的处理,而后者则关注于动作行为的处理。对于REST,常有人错误的将其视为“基于URL的Web服务”,也就将REST认为是另一种类型的远程调用(RemoteProcedureCall,RPC)机制。实际上,REST与RPC几乎并没有任何关系,RPC是面向服务的,关注于行为和动作;而REST是面向资源的,关注在数据的

2017-08-05 14:07:47

分布式架构设计之基础软件系统架构

分布式架构设计之软件系统架构一个好的系统架构需要从三方面进行设计:首先,我们必须明确系统的整体需求功能是什么,进而再对这些需求分模块以及构建模块间的交互设计,同时要明确相关技术的选型;然后,针对物理节点上的拓扑结构是必不可少的,比如:WebServer的负载分发、数据的集群等,这部分是属于架构的“硬实现”部分;最后,就是整体的软件系统的设计,这部分是整个系统架构的“软实现”,主要从系统内部软件系统角度实现设计,比如:基础通信服务、数据安全服务等。对于前两者的设计,读者可以参考上一篇文章《分布式架构设计之

2017-07-02 17:14:58

Spring框架总结之Profile使用

在实际开发中,有一个比较大的挑战就是将程序从一个环境迁移或切换到另一个环境。我们知道,测试或开发环境与正式或生产环境中的某些配置是不同的,如:数据库配置、加密算法等。所以传统的做法就是每次发布或测试时,都手动修改相关配置信息,十分繁琐和低效率,并且在发布时容易忽略修改的信息导致环境切换不正确。虽然,在早期时,我们可以在服务器存放配置信息,然后通过程序动态读取配置,但这样作的效率、灵活性及安全方面不是和好,所以鉴于这些问题,Spring在3.1版引入了BeanProfile的功能,它的产生可以完美的解决上面

2017-06-25 22:58:40

Tomcat多个Web Server配置

试想下,实际项目中,我们只有一台服务器,并且在上面只部署一个WebServer服务(这里是Tomcat),我们将多个Web项目同时部署在这个WebServer中,此时,这些项目运行一切正常。而当我们调整了某个项目时,需要重新打包发布,需要重启Tomcat服务时,问题出现了:因为多个项目部署在同一个Tomcat中,重启时这些Web项目都会停止服务,等待Tomcat重启成功,恢复正常状态。此刻正在使用其中某个项目产品时,就不能访问和操作了,这是不允许的。所以,我们需要建立多个Tomcat服务,把各个Web

2017-03-26 13:17:51

Spring框架总结之面向切面(一)

AOP(AspectOrientedProgramming),称之为“面向切面编程”,它是Spring框架的又一核心模块,与其支持的DI功能同样处于重要地位。相比于Java传统的继承体系(柱体体系结构),AOP则实现了横向切割程序生产线,产生若干切面体,而每个切面体含有特定的横切动作、目标对象及触发动作的契机点,触发之后,在横向实现了各种方式的非业务相关的动作,将业务和非业务模块分离,一般用来处理日志、缓存、事务及其它非业务通用部分功能。而AOP的实现机制,实际上是通过代理方式实现,那么接下来从AOP的

2017-02-28 11:38:47

Spring框架总结之依赖注入(一)

DI(DepandencyInjection),也叫“依赖注入”,与人也称其为“控制反转(IOC)”,而我更喜欢把它称之为DI。传统的Java对象,对其本身及关联的对象(Bean),都是自主创建和管理的,这样就导致高度耦合和难以测试的问题。而Spring框架则意识到这个问题,其提供的DI功能,可以完美的解决Bean及其依赖的Bean的创建、装配及生命周期等管理工作,这个管理机制称为“Spring容器”,也是Spring框架的核心模块。这里我会从Spring的DI原理、Bean生命周期及Bean装配三方面介

2017-02-26 14:46:02

RabbitMQ服务之运行管理篇

RabbitMQ服务之运行管理篇在实际使用中,我们必须要对RabbitMQ服务器进行管理,也要对其上创建的用户进行基本的权限配置和管理,以及也经常会对Rabbit服务的使用进行统计分析,接下来我们会逐一介绍它们。另外,我们知道,RabbitMQ服务是由Erlang语言所编写,一个RabbitMQ服务器实例是由Erlang节点和运行在其上的Rabbit程序所构成,一个Erlang节点上可以同时运行多个RabbitMQ程序,它们彼此之间可以通信,不论它们是否在同一个服务器上,这也是Erlang程序的特点所在

2017-01-09 14:50:57
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!