一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发生单点故障,并且单服务器需要处理所有的请求会导致压力较大. 单台Redis服务器内存容量有限,不易扩展. 第一个问题可以通过Redis主从模式实现单节点的高可用(HA). 从节点(slave)是主节点(master)副本,当主节点(master)宕机后,Redis 哨兵(Sentinel)会自动将从…
本章涉及到的内容如下 1.EngineContext初始化IEngine实例 2.Autofac依赖注入初始化 3.AutoMapper框架初始化 4.启动任务初始化 一.EngineContext初始化 nopCommerce应用启动时首先调用EngineContext.Initialize(false) 进行初始化引擎, 并对IEngine接口进行初始化.IEngine用于实现依赖注入和初始化工作.nop中使用Autofac进行依赖注入. 你会发现nop中很多如:EngineContext.…
一.插件简介 插件用于扩展nopCommerce的功能.nopCommerce有几种类型的插件如:支付.税率.配送方式.小部件等(接口如下图),更多插件可以访问nopCommerce官网. 我们看下后台如何配置管理插件的. [后台管理][商城配置][挂件管理]用于配置小部件,[插件管理][本地插件]管理本地所有插件 nop自带小部件:Nop.Plugin.Widgets.NivoSlider插件用于主页显示幻灯片,后续我们以此插件为例介绍nop是如何加载小部件的 本文主要介绍的是用于在网站中显示…
一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发生单点故障,并且单服务器需要处理所有的请求会导致压力较大. 单台Redis服务器内存容量有限,不易扩展. 第一个问题可以通过Redis主从模式实现单节点的高可用(HA). 从节点(slave)是主节点(master)副本,当主节点(master)宕机后,Redis 哨兵(Sentinel)会自动将从…
一.nop的global.asax文件 nop3.9基于ASP.NET MVC 5框架开发,而ASP.NET MVC中global.asax文件包含全局应用程序事件的事件处理程序,它响应应用程序级别和会话级别事件的代码. nop应用启动时调用 Application_Start 客户端请求时依次调用 Application_BeginRequest,Application_AuthenticateRequest,Application_EndRequest 请求未处理异常时调用 Applicat…
接口:Nop.Core.IWebHelper 实现:Nop.Core.WebHelper 测试:Nop.Core.Tests.WebHelperTests 简介:Web辅助类 功能:获取客户端IP地址.当前请求Url.服务器变量.主机地址.URL参数值 判断当前是否是安全连接.请求目标是否是静态资源.是否是重定向 修改/删除 URL参数值.重启应用程序 using System.Web; namespace Nop.Core { /// <summary> /// Represents a c…
官网:http://www.roxyfileman.com/ 中文包:zh.json 1.将zh.json包拷贝到Nop.Admin项目中"Content\Roxy_Fileman\lang\"下 2.conf.json修改"LANG":"auto" { "CreateDir":"创建", "RenameDir":"重命名", "DeleteDir"…
一.nop种的路由注册 在Global.asax,Application_Start()方法中会进行路由注册,代码如下. public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("favicon.ico"); routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //register custom routes (plu…
一.nop事件机制简介 应用场景:客户支付成功后,需要发送短信.邮件告知客户订单支付成功(短信.邮件由不同模块实现) 实现方法: 1.定义支付成功OrderPaidEvent事件. 2.定义短信,邮箱两个消费者共同监听OrderPaidEvent事件,并实现相关业务. 3.当客户支付成功后生产者发送OrderPaidEvent事件. 4.消费者接收到OrderPaidEvent事件后,短信和邮箱消费者分别执行自己的业务. nop事件机制使用到"生产者/消费者"模式.生产者只负责发布事件…
一.基础介绍 nop支持多店及多语言,本篇结合NivoSlider插件介绍下如何开发支持多商城的小部件. 主要接口如下: ISettingService 接口:设置接口,可实现多店配置. (点击接口介绍) ILocalizationService 接口:本地化资源接口,配合语言,实现多语言的显示.(点击接口介绍) 二.插件安装.卸载 我们在上一篇介绍了小部件如何使用(点击这里),这里介绍下如何安装.卸载插件. [后台管理][插件管理][本地插件]可以对插件进行安装.卸载 Nop.Admin.Co…
一.简介 nop通过插件机制可以支持更多的支付扩展,我们通过编写支持退款的支付宝插件来更好的理解支付插件的扩展. 先分享下支付宝插件源码点击下载,由于时间原因,本篇只介绍使用该插件,下一篇结合插件进行代码分析.       注意:测试时将项目部署在公网,这样才能接收来自支付宝的回调通知,否则无法接收支付宝回调会导致订单状态无法处理. 二.插件使用 1.将插件DaBoLang.Nop.Plugin.Payments.AliPay项目放置在"nopCommerce_3.90_Source\Plugi…
一.回顾 支付宝插件源码下载地址:点击下载 上篇介绍了使用支付宝插件进行支付,全额退款,部分退款还有插件的多店铺配置,本文介绍下如何实现的. 二.前期准备 插件主要有3个功能: 多店铺插件配置 支付功能 退款功能 数据库支持: 新增dbl_PaymentInfo表保存支付记录. 新增dbl_RefundInfo表保存退款记录. 其他准备: 支付宝即时到账PID和MD5秘钥Key,可通过支付宝开放平台获取. 三.流程规划 插件安装卸载流程 2.  支付流程 3.  退款流程 四.创建项目 1. …
一.简介 插件源码下载:点击下载 微信公众平台网站授权帮助地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 微信web开发者工具使用下载地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140 微信公众平台接口测试账号申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=…
一.简介 nop支持第三方外部授权登录的扩展,本篇通过编写微信公众平台登录插件进一步了解nop授权登录的开发过程. 微信公众平台.微信开放平台使用场景不一样,前者通过微信客户端进行开发如公众号,后者基于网站或第三方应用这里不多说,本插件是基于微信公众平台开发,因此测试需要使用到微信web开发者工具. 插件源码下载:点击下载 微信公众平台网站授权帮助地址:传送门 二.插件使用 1.将插件 DaBoLang.Nop.Plugin.ExternalAuth.WeiXin 插件项目放置在“nopComm…
官网:http://nunit.org/ GitHub:https://github.com/nunit 本文只介绍NUnit在VS中的配置使用,进一步学习 NUnit 请参考官方文档. nopCommerce 项目使用NUnit进行调试. 使用 Visual Studio 2017 打开nop项目执行测试发现没有任何反应,这是因为vs使用 NUnit 需要安装 NUnit3testadapter. vs 2017 打开[工具][NuGet 包管理器][管理解决方案的 NuGet 程序包]浏览中…
一.导入语言包 nop官网下载中文语言文件,下载后是一个xml文件. 打开xml文件我们可以看到LocaleResource节点Name属性为资源名称,Value节点为资源值. 后台[Confignuration][Languages]进入语言管理界面. 点击右上角Add new按钮按下图所示添加语言 点击[Save and Continue Edit]按钮保存并继续编辑. 点击[admin.configuration.languages.import ]按钮选择中文语言xml文件. 最后[ad…
在Global.asax,Application_Start()方法中会进行路由注册,代码如下. public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("favicon.ico"); routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //register custom routes (plugins, etc) v…
Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhong/category/771056.html .今天总结总结缓存使用过程中遇到的一些常见的问题.比如缓存雪崩,缓存穿透,缓存预热等等. 缓存雪崩 缓存雪崩是由于原有缓存失效(过期),新缓存未到期间.所有请求都去查询数据库,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机.从而形成一系列连锁…
前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/category/855479.html 本来一直想写一个介绍RabbitMQ高可用的集群的文章.不过,后来发现园子里,有个已经RabbitMQ大牛写了,关于高可用集群的文章了.特别巧合的是,还是以前公司的同事.所以,这里就不啰嗦.直接引用过来吧.原文地址:http://www.cnblogs.com/…
HDFS高可用 通过主从切换实现单NameNode高可用.通过Federation:水平扩展来联合多NameNode个: NameNode高可用 把edits日志从原来的nameNode中分离出来,存放到专门的日志服务(QJournal)集群中.取消原来的SecondaryNameNode,而使用主从双机的方式.Active的NameNode对外正常提供服务.产生的日志信息在写入到本机的edits中的同时,多线程并发写入到日志服务中.Standby的的NameNode则负责从日志服务器中获取ed…
一.前言 1.上文中我们已经搭建好了Hadoop和Zookeeper的集群,这一文来将Hadoop集群变得高可用 2.由于Hadoop集群是主从节点的模式,如果集群中的namenode主节点挂掉,那么集群就会瘫痪,所以我们要改造成HA模式(High Avaliable,高可用性)的集群,说白了就是设置一个备用的namenode节点,当线上使用的namenode挂掉后,会切换备用节点,让集群可以继续运行 二.HA模式配置 HA模式原理:比如设置两个namenode节点,一个active,一个sta…
一.HA概述 1.引言 正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 2.运行机制 实现高可用最关键的是消除单点故障 hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA.YARN的HA 详解: 通过双namenode消除单点故障 双namenode协调工作的要点: A.元数据管理方式需要改变: 内存中各自保存一份元数据 Edits日志只能有一份,只有Active状态的namenode节点可以做写操作 两个namenode都可以读取edits 共享的ed…
源码仓库地址:https://github.com/heibaiying/spring-samples-for-all 一.项目结构 eureka-server为服务注册中心,负责服务的管理: eureka-client 为eureka客户端: 二.三步搭建eureka 高可用注册中心 这里我们以单机伪集群的方式搭建,让三个单机注册中心互相注册,实现注册中心的高可用.配置示意图如下: 2.1 引入eureka服务端依赖 <dependency> <groupId>org.sprin…
1.如果你使用root用户进行安装. vi /etc/profile 即可 系统变量 2.如果你使用普通用户进行安装. vi ~/.bashrc 用户变量 export HADOOP_HOME=/export/servers/hadoop-2.8.5 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin: 同步配置文件 [root@jiang01 servers]# vi /etc/profile [root@jiang01 servers]#…
1.场景描述 因为要做网关的高可用,用到了keepalived+nginx,来保证nginx的高可用,如下图: 安装了keepavlived,走了一些弯路,记录下吧,nginx的安装就不多说了,博客已经介绍了好几篇了. 2. 解决方案 2.1 安装keepalived 2.1.1 安装相关依赖包 [root@t-ruanjianlaowang ~]# yum install -y libnl* [root@t-ruanjianlaowang ~]# yum install -y libnfnet…
(一)主从复制介绍 前面所讲的关于redis的操作都属于单机操作,单机操作虽然操作简单,但是处理能力有限,无法高可用.所谓高可用性,就是指当一台服务器宕机的时候,有备用的服务器能顶替上,在单机操作上这是无法实现的,因此就出现了主从复制. 我们把一台服务器看作是主服务器(master),把另外多台服务器看作是从服务器(slave),主从复制就是将master中的数据即时有效的复制到slave中. 主从复制特征: 一个master可以拥有多个slave,一个slave只对应于一个master mas…
Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 1 主从复制介绍 上一篇<Redis系列2:数据持久化提高可用性>中,我们介绍了Redis中的数据持久化技术,包括 RDB快照 和 AOF日志 .有了这两个利器,我们再也不用担心机器宕机,数据丢失了. 但是持久化技术只是解决了Redis服务故障之后,快速数据恢复的问题.并没有从根本上提升Redis的可用性,我们需要的是保障Redis的高可用,减少甚至避免Redis服务发生宕机的可能. 目前实现Redis高…
Percona XtraDB Cluster (下文简称PXC)是一个开源的mysql 高可用解决方案.它将Percona Server和Percona XtraBackup与Galera库集成在一起,实现同步多主复制.各节点的拓扑结构示意图如下图所示: 如图所示,PXC 各节点的地位是对等的,集群中的每个节点都可以用于读写,只要当集群中可用节点的数量处于多数时,整个集群就是可用的,在此基础上加上mysql的监控和 mysql proxy 的流量自动切换,这样就很大程度上解决了 mysql 的高…
如上图所见,本文就是要实现上面那种效果. 由于最近AlloyTouch要写一个下拉刷新的酷炫loading效果.所以首选大波浪进度图. 首先要封装一下大波浪图片进度组件.基本的原理是利用Canvas绘制矢量图和图片素材合成出波浪特效. 本文的代码你可以在这里https://github.com/AlloyTeam/AlloyTouch/blob/master/refresh/wave/image_wave.html找到. 了解quadraticCurveTo quadraticCurveTo()…
1.如何上传安装包到服务器 有三种方式: 1.1使用图形化工具,如: filezilla 如何使用FileZilla上传和下载文件 1.2使用 sftp 工具: 在 windows下使用CRT 软件 登录远程服务器后, 快捷键 alt + p 即可进入 SFTP 模式. 在 MAC 下使用CRT 软件 登录服务器后选择 链接 SFTP 如下图即可进入 SFTP 模式. 右键属性 1.2.1 用 put 命令上传 在 STFP 模式后使用用 put 命令上传. put /Users/zzy/Dow…