springcloud微服务七:网关zuul

理解网关概念

根据我个人的理解,对于一个系统来说,不管是微服务架构还是非微服务架构,如果单从功能实现来说,网关其实不是必要的。
但是,如果一个系统的业务涉及到了和外部网络的交互,多数情况下都会加入网关功能,最根源的目的就是提升系统的网络安全性。
因此网关可以理解为是在大的系统架构层面,一个网络策略方面的东西,最基本的需求就是实现请求的路由转发。

继续阅读全文 »

springcloud微服务六:声明式服务调用Feign

在有了eureka服务注册中心、ribbon负载均衡及服务消费、hystrix断路器三部分之后,其实在某种程度上就应该能够创建一个基本的spring cloud微服务应用了,只不过这种应用无论是代码层面还是架构层面都还有一定的缺陷。
从代码层面来讲,ribbon和hystrix是一个标准化springcloud应用最基本的模块,通常也都是同时出现的,因此为了简化开发,有一个更高层次的工具来对他们进行了封装整合,这就是Feign。
feign在整合了这两者强大功能的同时,还提供了一种声明式的web服务客户端定义方式及可插拔式的注解,同时支持spring mvc的注解。
在ribbon和hystrix的基础上,feign看起来就比较简单。

继续阅读全文 »

springcloud微服务五:客户端负载均衡ribbon

基本概念理解

ribbon用在客户端,或者说消费端,被称作客户端负载均衡。
对于这个称呼,可以解析为三个部分,一个是客户端,一个是负载均衡,然后就是客户端负载均衡。
根据个人理解,所有发起请求的一端、去拿东西的一端,都可以称之为客户端或消费端。
而负载均衡,一般则是针对于至少两个以上的集群而言,重点在于均衡。从相对论的角度而言,一切都是相对的,那么也就不存在绝对的均衡,因此所谓的均衡就需要一定的标准,如何达到这个标准,则需要一定的控制,即负载均衡策略,也可以称之为规则。
对于客户端负载均衡,则可以很好的理解为,这是相对于服务端负载均衡而言。相对于服务端负载均衡而言,客户端负载均衡的好处就在于各个客户端自己实现负载均衡运算,从而降低了服务端的压力。坏处在于客户端要自己实现负载,就需要清楚服务端集群的状态,增加了客户端的复杂度以及多个客户端下可能看起来的功能冗余。

继续阅读全文 »

mysql常用操作语法(十四)~~复杂的存储过程

前言

我看到在很多教程中,都是把存储过程和自定义函数一起讲,主要是因为他们两个非常的相像,而且自定义函数从某种程度上讲,更像是存储过程中的特例。
在这种情况下,我就暂时省略掉自定义函数的笔记,直接继续了解更复杂的存储过程。
所谓的更复杂,实际上也就是定义变量,变量赋值,游标以及结构控制语句和循环等,有java语言基础的情况下,就很好理解了,只是其中有些细节需要稍微注意一下。

继续阅读全文 »

mysql常用操作语法(十三)~~存储过程

为什么要使用存储过程

在系统实际开发应用中,有可能只需要单条sql语句就能实现想要的功能,但是有时候,要完整实现某个业务,却需要同时执行多条sql才能达到目的。
在这种业务场景中,如果不希望通过客户端屡次执行多条sql,那么存储过程就是其中一个较好的实现方式。
因此,存储过程可以简单的理解为就是多条sql的集合,虽然在存储过程中实际也可以是单条sql。

继续阅读全文 »

dubbo学习——基础环境搭建过程及要点记录

网上关于dubbo的资料其实已经不少了,尤其是还有一个比较全面的官方文档教程。
但是正所谓知易行难,很多事不动动手,就总不知道里边的一些细节。
虽然早就想学一下dubbo,但是奈何需要学的东西太多,于是就以“工作为主导”的出发点,先学了其他技术。
这次,也是基于上边的出发点,我们某个项目需要重构成dubbo的项目,于是便正好从dubbo基础环境搭建开始学一下,并写一篇笔记备忘。
这篇笔记大概会包含如下一些内容:
1、搭建过程记录
2、遇到的问题和解决办法记录,这一点会在搭建过程记录的同时进行说明,不另外指出

继续阅读全文 »