设计模式之代理,手动实现动态代理,揭秘原理实现

  开心一刻    周末,带着老婆儿子一起逛公园。儿子一个人跑在前面,吧唧一下不小心摔了一跤,脑袋瓜子摔了个包,稀里哗啦的哭道:“爸爸,我会不会摔成傻子!”    我指了指我头上的伤痕安慰道:“不会的,你看,这是爸爸小时候摔的。”    话还没有说话,小家伙哭的更厉害了:“那就是说我长大后就会和你一样傻了,我不要,我不要!”    老婆忍不住发飙:“别哭了,你怎么会变傻呢?你看你爸,你爸傻吗?”    我赶紧回应道:“是啊,你看我多聪明!”    儿子:“真的,不骗我?”    老婆:“当然!”    儿子:“可是如果老爸不是傻子,当年怎么会娶你这个母老虎呢?”    我、老婆:……  所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的左右。  代理模式:...

应用集成mycat,实现mycat的高可用与mysql的读写分离

  开心一刻    一个女人自朋友圈写道:我家老公昨天和别人家的老婆出去旅游,迄今未归,我则被别人家的老公折腾了一天,好累哦!    圈子下面,评论无数,老公在下面评论到:能不能好好说话,我只不过陪女儿去毕业旅游行,而你负责在家留守,照顾三岁儿子,要不要写的这么刺激、让人浮想联翩的?你是不是有点虎?诺维斯基:你往哪射了?周子瑜:我只是个娱乐明星,射箭我不是专业的...  路漫漫其修远兮,吾将上下而求索!  github:https://github.com/youzhibing  码云(gitee):https://gitee.com/youzhibing  通过前面的两篇博文:Mycat-实现数据库的读写分离与高可用和Mycat-高可用与负载均衡实现,满满的干货!,我们完成了如下图所示的组件部署组件结构图一  SQL请求发给VIP,keepalived完成VIP的映射,并通过lvs将请求转发mycat,mycat根据SQL请求类型(DMLSQL还是SELECTSQL,亦或是强制指定db节点)将SQL分发到具体的db,完成由具体的数据库服务完成SQL的执行。  但这还只是停留在数据库层...

keepalived实现mycat高可用问题排查;道路坎坷,布满荆棘,定让你大吃一惊!

  开心一刻    医院里,一母亲带着小女孩打针。小女孩:“妈妈我不想打针,疼!”妈妈:“宝贝儿听话,这里这么多护士阿姨,咱们找个打针不疼的。”小女孩:“那哪个阿姨打针不疼呢?”妈妈:“妈妈也不知道,咱们试试看吧。”小女孩高兴的点了点头。。。  路漫漫其修远兮,吾将上下而求索!  github:https://github.com/youzhibing  码云(gitee):https://gitee.com/youzhibing  Mycat-实现数据库的读写分离与高可用写完之后,本以为一两天就能写完Mycat-高可用与负载均衡实现,满满的干货!,可事实是却用了一个星期;期间虽然产生了一系列的问题,但主要还是卡在了keeplaived实现mycat高可用,那时候两台keepalived服务器的keepalived.conf内容如下  细心的朋友应该已经找到问题了,不管你找没找到问题,都可以准备好花生、瓜子和啤酒,且看我是如何埋雷和扫雷的   个人一直用ifconfig命令来管理...

spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!

  开心一刻    小白问小明:“你前面有一个5米深的坑,里面没有水,如果你跳进去后该怎样出来了?”小明:“躺着出来呗,还能怎么出来?”小白:“为什么躺着出来?”小明:“5米深的坑,还没有水,跳下去不死就很幸运了,残是肯定会残的,不躺着出来,那能怎么出来?”小白:“假设没死也没残呢?”小明:“你当我超人了?那也简单,把脑子里的水放出来就可以漂出来了。”小白:“你脑子里有这么多水吗?”小明:“我脑子里没那么多水我跳下去干嘛?”   路漫漫其修远兮,吾将上下而求索!  github:https://github.com/youzhibing  码云(gitee):https://gitee.com/youzhibing  springboot1.x到2.x变动的内容还是挺多的,而2.x之间也存在细微的差别,本文不讲这些差别(具体差别我也不知道,汗......),只讲1.5.9与2.0.3的redis缓...

elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统

  刚从事开发那段时间不习惯输出日志,认为那是无用功,徒增代码量,总认为自己的代码无懈可击;老大的叮嘱、强调也都视为耳旁风,最终导致的结果是我加班排查问题,花的时间还挺长的,要复现问题、排查问题等,幸亏那是公司内部员工用的系统,时间长一点也没什么大问题,但是如果是针对客户的,时间就代表很多东西了,那造成的影响就非常大了。自那以后养成了输出日志的习惯。  但是后来发现,仅仅只是输出日志文件,对于排查问题来说,还是很费时,因为要在一个庞大的日志文件中过滤出我们需要的信息也十分耗时;那么此时基于日志文件的日志系统就被需要了。  至于需不需要搭建日志系统、以及搭建一个怎样的日志系统,需要根据我们的业务实际情况而定,例如公司内部员工用的一个不重要的系统,那么日志文件可能就够了;而对于针对客户的、直接与公司利益挂钩的,我认为不仅要搭建日志系统,更要输出更详细的日志信息到日志文件,提供运维的效率。  elk+filebeat各个组件的功能    Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于ApacheLucene构建,能对大容量的数据进行接近实时的存储、...

Redis Cluster的搭建与部署,实现redis的分布式方案

  上篇RedisSentinel安装与部署,实现redis的高可用实现了redis的高可用,针对的主要是master宕机的情况,我们发现所有节点的数据都是一样的,那么一旦数据量过大,redis也会效率下降的问题。redis3.0版本正式推出后,有效地解决了Redis分布式方面的需求,当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构方法达到负载均衡的目的。  而此篇将带领大家实现RedisCluster的搭建,并进行简单的客户端操作。  github地址:https://github.com/youzhibing/redis  redis版本:redis-3.0.0  linux:centos6.7  ip:192.168.11.202,不同的端口实现不同的redis实例  客户端jedis,基于spring-boot        节点准备    192.168.11.202:6382,192.168.11.202:6383,192.168.11.202:6384,192.168.11.20...

Redis Sentinel安装与部署实现redis的高可用

  对于生产环境,高可用是避免不了要面对的问题,无论什么环境、服务,只要用于生产,就需要满足高可用;此文针对的是redis的高可用。  接下来会有系列文章,该系列是对spring-session实现分布式集群session的共享的完整阐述,同时也引伸出缓存的实现;而此篇是该系列的第一篇。  github地址:https://github.com/youzhibing/redis  redis版本:redis-3.0.0  linux:centos6.7  ip:192.168.11.202,一台服务器上搭建搭建全部redis实例,包括数据节点实例以及哨兵(sentinel)实例  客户端jedis,基于spring-boot  搭建一主二从的主从环境  1、redis安装    安装很简单,网上资料很多,redis官网也有说明;主要就是3步:解压,make,makeinstall  2、数据节点配置文件    redis解压后,redishome目录下有redis配置的样例文件,我们不直接在此文件上就行修改,在redishome目录下新建文件夹master_slave,将配置文件都放于...

flying-saucer + iText + Freemarker实现pdf的导出, 支持中文、css以及图片

     项目中有个需求,需要将合同内容导出成pdf。上网查阅到了 iText , iText 是一个生成PDF文档的开源Java库,能够动态的从XML或者数据库生成PDF,同时还可以对文档进行加密,权限控制,并且还支持Java/C#等,但是iText本身提供的HTML解析器还是不够强大,许多HTML标签和属性无法识别,更悲催的是简单的CSS它不认识,排版调整样式让人头大。那么有没有什么方式能够支持css呢,又查阅到了 flying-saucer, flying-saucer也是导出PDF的一种解决方案,并且是基于iText的开源API,并且实现了CSS解析器,能够很好的支持CSS2.1,以及少量的CSS。最终解决方案定为: flying-saucer + iText +  Freemarker。  流程如下  pom.xml<projectxmlns="http://maven.apache.org/POM/4...

spring-session实现分布式集群session的共享

  HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保存在内存中的。但是我们把应用搭建成分布式的集群,然后利用LVS或Nginx做负载均衡,那么来自同一用户的Http请求将有可能被分发到多个不同的应用中。那问题来了,如何保证不同的应用能够共享同一份session数据呢?最简单的想法,就是把session数据保存到内存以外的一个统一的地方,例如Memcached/Redis等数据库中。那问题又来了,如何替换掉Servlet容器创建和管理的HttpSession的实现呢?  1、利用Servlet容器提供的插件功能,自定义HttpSession的创建和管理策略,并通过配置的方式替换掉默认的策略。这方面其实早就有开源项目了,例如memcached-session-manager(可以参考负载均衡+session共享(memcached-session-manager实现),以及tomcat-redis-session-manager。不过这种方式有个缺点,就是需要耦合Tomcat/Jetty等Servlet容器的代码。  2、设计一个Filter,利...

nginx实现请求的负载均衡 + keepalived实现nginx的高可用

  使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。通过负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈。摘自《大型网站技术架构_核心原理与案例分析》  另外,大家可以看我的这两篇博客:LVS+keepalived+nginx+tomcat实现主从热备+负载均衡和主从热备+负载均衡(LVS+keepalived),对比下这三篇博客,其中区别及各自的优缺点需要大家好好体会。  192.168.0.221:nginx+keepalived  master  192.168.0.222:nginx+keepalived backup  192.168.0.223:tomcat  192.168.0.224:tomcat  虚...

spring集成mybatis实现mysql读写分离

      在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。幸运的是目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。如下图所示:    应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据的时候,就可以通过从数据库获得数据。为了便于应用程序访问读写分离后的数据库,通常在应用服务器使用专门的数据库访问模块,使数据库读写分离对应用透明。摘自《大型网站技术架构_核心原理与案例分析》      而本博客就是来实现“专门的数据库访问模块”,使数据库读写分离对应用透明。另外,mysql数据库的主从复制可以参考我的mysql5.7.18的安装与主从复制。注意,数据库实现了主从复制,才能做数据库的读写分离,所以,没有实现数据...

cassandra高级操作之分页的java实现(有项目具体需求)

  接着上篇博客,我们来谈谈java操作cassandra分页,需要注意的是这个分页与我们平时所做的页面分页是不同的,具体有啥不同,大家耐着性子往下看。  上篇博客讲到了cassandra的分页,相信大家会有所注意:下一次的查询依赖上一次的查询(上一次查询的最后一条记录的全部主键),不像mysql那样灵活,所以只能实现上一页、下一页这样的功能,不能实现第多少页那样的功能(硬要实现的话性能就太低了)。  我们先看看驱动官方给的分页做法  如果一个查询得到的记录数太大,一次性返回回来,那么效率非常低,并且很有可能造成内存溢出,使得整个应用都奔溃。所以了,驱动对结果集进行了分页,并返回适当的某一页的数据。  路漫漫其修远兮,吾将上下而求索!  github:https://github.com/youzhibing  码云(gitee):https://gitee.com/youzhibing  抓取大小指的是一次从cassandra获取到的记录数,换句话说,就是每一页的记录数;我们能够在创建cluster实例的时候给它的fetchsize指定一个默认值,如果没有指定,那么默认是5000//...

WebService与RMI(远程调用方式实现系统间通信)

  本文是《分布式java应用基础与实践》读书笔记;另外参考了此博客,感觉讲的挺好的,尤其是其中如下内容:  另外,消息方式实现系统间通信本文不涉及。RMI则只采用springRMI框架来实现效果,更多的则是来讲讲webService及效果。  (RemoteMethodInvocation)----》springRMI(配置及实现直接参考spring文档,已经很详细了)  springRMI工作原理图如下:  RMI代码结构图:  服务端代码    接口Business.java:packagecom.rmi.server;publicinterfaceBusiness{/***显示客户端提供的消息,并返回*@parammessage*@return*/publicStringecho(Stringmessage);}ViewCode    接口实现类BusinessImpl.java:packagecom.rmi.server;publicclassBusinessImplimplementsBusiness{@OverridepublicStringecho(Stringmess...

负载均衡+session共享(memcached-session-manager实现)

  先给大家伙拜个年,祝大家:新的一年健健康康,平平安安!      本文的形成参考了很多人的博客,最多的应该是青葱岁月兄的这篇博客,大家可以先去看下,熟悉一些内容,因为本文是直接实践,一些理论性的知识就需要大家自己去补充了。  本文是在我之前环境LVS+keepalived+nginx+tomcat实现主从热备+负载均衡基础上进行的,所以很多环境的搭建本文就不涉及了,没看的朋友可以先去看下。  由于我大天朝对国外网站的限制,memcached的相关jar文件不太好下载,这里给上我的memcached的网盘地址,为需要的朋友提供方便。  VIP(VirtualIP)为192.168.1.200,用户只需要访问这个IP地址即可获得网页服务  负载均衡主机为192.168.1.114(master)----》keepalived  备机为192.168.1.112(brucelee)----》keepalived  Web服务器A为192.168.1.111(youzhibing)----》realserver+nginx+tomcat+memcached  Web服务器B为192.168...

LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡

  首先声明下,由于这两天找资料,看了不少博客,但是出于不细心,参考者的博客地址没有记录下来,所有文中要是出现了与大家博客相同的地方,那么请大家在评论区说明并附上博客地址,我好引用进来;这里表示抱歉了!  另外,本文是在我的另一篇博客主从热备+负载均衡(LVS+keepalived的基础上进行的,如果没有看过,那么最好去看下,不然本篇文章看起来有点费劲哦!  LVS提供虚拟服务;nginx作为反向代理服务器来实现负载均衡;keepalived实现主从热备,检查RealServer的健康状态以及主机与备机之间失效转移。  VIP(VirtualIP)为192.168.1.200,用户只需要访问这个IP地址即可获得网页服务  负载均衡主机为192.168.1.114(master)----》keepalived  备机为192.168.1.112(brucelee)----》keepalived  Web服务器A为192.168.1.111(youzhibing)----》realserver+nginx+tomcat  Web服务器B为192.168.1.115(youzhibing03...
首页上一页...620621622623624...下一页尾页