为您找到搜索结果:6158个
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...
使用 shopfiy 模板语言,创建产品模板以搭配购物车实现一键购买
shopfiy的product在添加产品时,如果要将产品详情页面与购物车关联,就是在详情页里面直接下单,而不是从详情页通过点击购买按钮,跳到shopfystroe,再从这个位置再跳转到下单页。为了改变这种不停的跳转,且如果网络不好的情况下,很容易流失客户。操作方法可以简单描述成这样:先在Product中添加一个产品模板,在当前产品模板中,关联 Producttemplate中的自定义模板,这个自定义模板来自OnlineStore的 Templates:建立自义定义模板:product.customize.liquid//这个自定义模板包含通用的产品模板页中的内容,主要是通用的css/js/布局以及购物车相关的代码块<linkrel="prefetchprerenderstylesheet"type="text/css"href="{{'swiper.css'|asset_url}}"/><linkrel="prefetchprerenderstylesheet"type="text/css"href="{{'bolt.css'|asset_url"...
以聚合数据免费接口为例,通过 Class 类继承方法,让小程序实现项目化接口调用
微信小程序数据来源,是通过接口实现的。但接口如何调,数据如何取?每个人都有不同的方法,下面以聚合数据免费接口为例。配置接口config.js聚合数据请求接口需要以key作为参数。constconfig={api_base_url:"http://apis.juhe.cn/goodbook",key:"93bdf89de207034fa6c7544f88b99c76"};export{config}封装wx.request方法ES6中有类方法可以直接使用,使用HTTP作为类名,新建request作为类的方法,在这个方法中调用wx.request。classHTTP{//requestrequest(params){letthat=this;if(!params.method){params.method='GET';}wx.request({url:config.api_base_url+params.url+"?key="+config.key,data:params.data,method:params.method,header:{'content-type':'applicati...