原创
在上一篇文章 《Spring Cloud 入门 之 Ribbon 篇(二)》 中介绍了 Ribbon 使用负载均衡调用微服务,但存在一个问题:消费端每个请求方法中都需要拼接请求服务的 URL 地址,存在硬编码问题且不符合面向对象编程思想。如果服务名称发生变化,消费端也需要跟着修改。 本篇文章将介绍 Feign 来解决上边的问题。 Feign 是一个声明式的 Web Service 客户端。使用 Feign 能让编写 Web Service 客户端更加简单,同时支持与Eureka、Ribbon 组合使用以支持负载均衡。
阅读全文原创
上一篇《Spring Cloud 入门 之 Eureka 篇(一)》 介绍了微服务的搭建,服务注册与发现。但在文章中留了一个小尾巴--如何正确使用 Eureka 进行服务发现并调用服务。 本篇文章将介绍如何使用 Ribbon 完成发现服务的调用以及其负载均衡的规则的使用。 Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡工具,其主要功能是提供客户端的软件负载均衡算法,将 Netflix 的中间层服务连接在一起。
阅读全文原创
Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。 本篇介绍 Spring Cloud 入门系列中的 Eureka,实现快速入门。 Eureka 是 Netflix 的子模块,它是一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。
阅读全文原创
作为一个开发人员,为了提升自身能力,需要不断学习新技术和模拟问题场景尝试解决问题。 使用虚拟机作为演练环境是个不错的方案,默认情况下宿主机与虚拟机不能正常通信,本篇将介绍具体步骤解决通信问题。 安装好 VMWare Workstation 时会自动在宿主机中安装 2 块虚拟网卡:VMnet1 和 VMnet8。
阅读全文原创
笔者在开发这套博客系统时使用 Editormd 作为 Markdown 编辑器,由于不满足其代码高亮的样式,因此选用 highlight.js 插件来实现代码高亮功能。但是,highlight.js 插件不提供行号的设置功能,于是有了该文章。 html 的代码块都是通过 <code></code> 进行封装,我们可以将其内容取出封装到 <ol><li></li></ol> 从而实现设置行号的效果。 下边提供两种实现方式。
阅读全文原创
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 测试环境:CentOS 7.4, IP:192.168.10.100 如果是首次安装 jenkins 启动失败,应该是 jenkins 没有找到 jdk 命令的缘故。我们有两种方式解决:
阅读全文原创
笔者在搭建架构时,通常会利用泛型对 dao 层 和 service 层公共的代码(增删改)进行抽取,但是遇到一个尴尬的问题,就是实体类中的时间设置。 解决办法有很多,简单的方法就是在 web 层接收实体类参数后直接设置时间即可。但是,web 层理论上只是调用 service 层代码而已,设置时间的操作应该放在 service 层来实现,且设置时间又是一个简单的、重复性的操作,因此在网上查阅了一些资料,个人感觉比较友好的方式就是使用 Mybatis 插件。 本文介绍使用 Mybatis 插件动态设置参数。
阅读全文原创
IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn、github等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 演示版本:Version 2017.1.4
阅读全文原创
为了有效和安全管理插件,在 Sublime Text 的安装目录中创建 Data 目录(之后插件就放在该目录中)。 重启 Sublime Text 后 Preferences-> Browse Package 打开的目录就指向 Data。 主界面 Help-> Enter license,弹出窗口输入如下内容:
阅读全文原创
上一篇《MySQL 实现主从复制》 文章中介绍了 MySQL 主从复制的搭建,为了在项目上契合数据库的主从架构,本篇将介绍在应用层实现对数据库的读写分离。 配置主从数据源,当接收请求时,执行具体方法之前(拦截),判断请求具体操作(读或写),最终确定从哪个数据源获取连接访问数据库。 在 JavaWeb 开发中,有 3 种方式可以对请求进行拦截:
阅读全文