首页
Search
1
Linux免密登陆-ubuntu
976 阅读
2
Redis集群部署方案
953 阅读
3
数据同步工具DataX、Sqoop和Canal
918 阅读
4
Hadoop各版本汇总
906 阅读
5
Spark学习笔记
884 阅读
大数据
Flink
后端
Java
笔记
运维
游客
Search
标签搜索
大数据
Flink
离线
实时
Redis
OpenJDK
Java
笔记
JVM
Elasticsearch
GC
Hadoop
Hudi
Flink CDC
K8S
数据湖
WD1016
累计撰写
56
篇文章
累计阅读
12.4万
次
首页
栏目
大数据
Flink
后端
Java
笔记
运维
页面
搜索到
30
篇与
WD1016
的结果
返回首页
2018-03-17
金融资产管理项目-银企直连
银企直连主要是与银行系统、其它子系统交互和为其它子系统提供接口的系统。主要功能 银行机构管理:维护全国各个银行网点的基本信息,可从Excel导入由财务公司提供的模板,支持页面变更,同时对外提供接口,由其它子系统增量更新。财银关系管理:维护财务公司和成员单位银行账户上下级的关系,只有维护过的账户才能通过银企直连正常连接银行做交易。归集策略设置:按设定的策略将成员单位的资金归集到财务公司基础策略:绑定相关类型的定时任务、金额、归集类型(指定金额、按比例、保留余额),每个策略都可以绑定多个成员单位,绑定后即为归集策略。临时策略:和归集策略为多对一的关系,有生效日期、失效日期,如果生效日期是当天,冻结相应的归集策略。生效归集策略时临时策略会失效,删除和失效临时策略时归集策略会生效。除此之外,还包含下拨策略设置、手动归集、支付状态修改、支付失败处理、归集业务入账、归集资金抹账,手工解冻、查余额、查状态、刷明细、查明细、查账户信息等功能。该系统提供和各大银行前置机交互的能力,如中国银行、工商银行、交通银行、建设银行、农业银行,交互接口文档分别由各银行研发中心提供。后台常驻线程 交易状态刷新轮询任务:归集状态刷新、支付状态刷新,循环刷新各个银行。判断银行客户端是否存在,按银行将库中状态为交易待查的交易向银行查询,因为各银行系统对外部系统请求时间间隔都有限制,所以需要注意刷新时间间隔,根据银行编号、重发类型计算重发时间间隔,若在间隔范围内,则发送银行。每个银行每种交易都需要配置相应的报文模板,以bankCode+transCode命名,采用模板引擎,例如FreeMarker;同样,每个银行系统返回的报文解析都不相同的。除此之外,还有交易重发轮询任务(将库中待发送银行的交易发送银行),银行接口状态刷新任务(检查各个银行的前置机是否联通),入账管理任务(轮询待入账的数据重发记账)。定时任务 银行当日明细刷新:循环去银行获取该账号的当日交易明细,解析后进行分类入库,代理收款的需要冻结金额,银行端归集的需要记账,指令归集和支付的需要对比是否有已抹账的数据分别入库或更新状态。还有账户当日余额刷新、银行历史明细刷新、归集策略切换定时任务,这些都需要在数据库添加基础数据。对外提供的接口 信息服务接口:外部系统从银企获取银企维护的基础数据或交易数据刷新服务接口:由管理端手动出发触发调银行交易服务交口:提供线上支付渠道,调银行接口来进行交易调用银行接口 信息查询:主要获取账户的基本信息、余额等流水刷新:获取指定账号的当日或历史交易流水支付交易:支付转账、归集等交易接口银企与银行系统的通讯都需要通过前置机加密,每个银行都需要部署前置机,交易日志详情都可在前置机下查看,农行的前置机从银行刷回数据不会返回给请求的系统,会以文件的形式保存到前置机指定目录下,由于应用环境和前置机不在同一台机器,可以通过部署ftp的形式共享文件。
2018年03月17日
531 阅读
4 点赞
2017-12-03
金融项目微调OpenJDK,编译源码
系统版本:Ubuntu 16.04 LTS系统类型:64位操作系统编译出来的是64位的JDK,可以通过设置参数--with-target-bits=32生成32位编译结果。OpenJDK源码下载 https://hg.openjdk.java.net/jdk8/jdk8,点击左侧zip下载到到本地直接解压即可。微调源码使该JDK编译打包后的jar其他JDK无法识别,应用系统必须和JDK配套部署,例如银行自己开发的一套企业金融资产管理系统,交付第三方财务公司使用时,同时提供jar包和JDK,这样就增强了系统的安全性。安装GCC或CLang,例如,安装GCC的命令为:sudo apt-get install build-essential在编译过程中需要依赖FreeType、CUPS等若干第三方库,OpenJDK全部的依赖库如下:OpenJDK除了使用C、C++编写外,还使用了Java语言,因此还需要一个编译期可用的小版本JDK(如JDK7),官方称为“Bootstrap JDK”。编译命令:1.执行bash configure --enable-debug --with-jvm-variants=serverconfigure会检查依赖项、参数配置和构建输出目录结构等。2.执行make images编译整个OpenJDK,images(product-images)是编译出整个JDK镜像,其他参数还有:hotspot:只编译HotSpot虚拟机 hotspot-<variant>:只编译特定模式的Hot Spot虚拟机 docs-image:产生JDK的文档镜像 test-image:产生JDK的测试镜像 all-images:相当于连续调用product、docs、test三个编译目标 bootcycle-images:编译两次JDK,其中第二次使用第一次的编译结果作为Bootstrap JDK clean:清理make命令产生的临时文件 dist-clean:清理make和configure命令产生的临时文件编译后产生的JDK路径:build/配置名称/jdk,把它复制到JAVA_HOME目录,就可以作为一个完整的JDK来使用。重新编译前先执行make clean和makedist-clean命令清理目录。
2017年12月03日
1,373 阅读
43 点赞
2017-03-11
Memcache部署流程
建安装目录 mkdir -p /application/search/libeventmkdir -p /application/search/memcached安装libevent tar zxvf libevent-2.0.21-stable.tar.gzcd libevent-2.0.21-stable./configure -prefix= /application/search/libeventmakemake installtar zxvf memcached-1.4.21.tar.gz注:安装memcached时需要指定libevent的安装位置./configure -prefix=/application/search/memcached --with-libevent=/application/search/libeventmakemake instal启动memcached/application/search/memcached/bin/memcached -d -m 1024 -u search -l 172.16.0.6 -p 12015 -c 512 -P/application/search/searcher/memcached/bin/memcached 可执行程序路径11211 端口号1024m 分配1024M内存-d 在后台运行Memcached在实现分布集群部署时,Memcached服务端的之间是没有通讯的,服务端是伪分布式,实现分布式是由客户端实现的,客户端实现了分布式算法把数据保存到不同的Memcached 服务端。分布式缓存需考虑如下三点:1、缓存本身的水平线性扩展的问题。2、缓存大病罚下的本身性能问题。3、避免缓存的单点鼓掌问题。分布式缓存存在的问题:1、内存本身的管理问题。内存的分配,管理和回收机制。2、分布式管理和分布式算法。3、缓存键值管理和路由。
2017年03月11日
575 阅读
3 点赞
2017-01-14
Linux免密登陆-ubuntu
1.假设目前有2台服务器:Master、Slave,现在要设置它们之间免密码ssh登陆。2.1 配置Master免密码登陆Slave免密码ssh登录的原理是这样的:a.Master(NameNode | JobTracker)如果作为客户端,实现无密码公钥认证,来连接到服务器Salve(DataNode | Tasktracker)上,需要在Master上生成一个密钥对,包括1个公钥和1个私钥,然后需要将公钥复制到所有的Slave上。b.当Master通过SSH连接Salve时,Salve就会生成一个随机数,并且用Master的公钥对随机数进行加密,并且发送给Master。c.Master收到加密数之后,会使用自己的私钥解密,并将解密数回传给Slave。d.Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,这个过程中不需要用户手动输入密码。而具体到实现这个无密码登录的准备过程,重要的是将客户端Master的公钥复制到Slave上。2.1.1 创建“.ssh”目录若“.ssh目录”不存在,创建”.ssh目录”:mkdir ~/.ssh2.1.2 修改“.ssh 目录”权限。chmod 700 ~/.ssh2.1.3 创建Master服务器的公钥和私钥ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa这个过程会在目录:~/.ssh/下生成公钥:id_rsa和私钥:id_rsa.pub2.1.4 配置Master本机ssh免密登录做测试同第1步类似,在Master上配置一下本机的ssh免密登录,将公钥“id_rsa.pub”追加到授权的key里面:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys授权:chmod 0600 ~/.ssh/authorized_keys然后使用命令:ssh localhost做测试,没问题就可以了。注意: 登陆之后,记得执行:exit退出!2.1.5 修改SSH配置文件"/etc/ssh/sshd_config"修改SSH配置文件:/etc/ssh/sshd_config确保以下内容信息:RSAAuthentication yes # 启用 RSA 认证PubkeyAuthentication yes # 启用公钥私钥配对认证方式AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)2.1.6 拷贝Master的公钥到Slave上去执行命令:scp ~/.ssh/id_rsa.pub hadoop@Slave:~/2.1.7 配置Slave节点登录Slave节点,执行以下操作:a.修改.ssh权限:chmod 700 ~/.sshb.把Master的公钥追加到Slave的授权文件"authorized_keys"中去:cat ~/id_rsa.pub >> ~/.ssh/authorized_keysc.修改该授权文件的权限:chmod 600 ~/.ssh/authorized_keys2.1.8 测试免密码登录在Master上执行:ssh Slave其中“Slave”已经在Master的“/etc/hosts”文件中配置过了,如果这个登录不需要输入密码,那么免密码ssh登录就设置成功了!2.2 配置Slave免密码登陆Master
2017年01月14日
976 阅读
76 点赞
2014-01-04
“锁”相关总结
synchronized 1.JDK 6之后,synchronized目前锁一共有4种状态,级别从低到高依次是:无锁、偏向锁、轻量级锁和重量级锁。锁状态只能升级不能降级。偏向锁,一段同步代码一直被一个线程所访问,那么该线程会自动获取锁,降低获取锁的代价。轻量级锁,是指当锁是偏向锁的时候,被另外的线程所访问,偏向锁就会升级为轻量级锁,其他线程会通过自旋的形式尝试获取锁,不会阻塞,从而提高性能。重量级锁,若当前只有一个等待线程,则该线程通过自旋进行等待。但是当自旋超过一定的次数,或者一个线程在持有锁,一个在自旋,又有第三个来访时,轻量级锁升级为重量级锁。重量级锁,除了拥有锁的线程以外的线程都阻塞。{lamp/}ReentrantLock Synchronized,Java虚拟机完成,不公平锁,ReentrantLock和synchronized都是可重入锁。ReentrantLock,类层面的实现,户自己去操作,可以指定锁是公平的还是非公平的。NonReentrantLock,不可重入锁。ReentrantLock更灵活,在Hashtable和ConcurrentHashMap中体现得淋漓尽致synchronized的话,锁的范围是整个方法或synchronized块部分;而Lock因为是方法调用,可以跨方法,灵活性更大。和synchronized相比,ReentrantLock提供给用户多种方法用于锁信息的获取,比如可以知道lock是否被当前线程获取、lock被同一个线程调用了几次、lock是否被任意线程获取等等。ReentrantLock的某些方法可以决定多长时间内尝试获取锁,如果获取不到就抛异常,这样就可以一定程度上减轻死锁的可能性,如果锁被另一个线程占据了,synchronized只会一直等待,很容易错序死锁。之后,synchronized做了诸多优化,效率上synchronized和ReentrantLock应该是差不多。{lamp/}公平锁 VS 非公平锁 公平锁:线程直接进入队列中排队,等待队列中除第一个线程以外的所有线程都会阻塞,优点是等待锁的线程不会饿死,缺点是整体吞吐效率相对非公平锁要低。非公平锁:如果此时锁刚好可用,线程有几率不阻塞直接获得锁,CPU不必唤醒所有线程,缺点是处于等待队列中的线程可能会饿死,或者等很久才会获得锁。{lamp/}乐观锁 VS 悲观锁 {lamp/}自旋锁 VS 适应性自旋锁 自旋锁:自旋等待虽然避免了线程切换的开销,但它要占用处理器时间。如果锁被占用的时间很短,自旋等待的效果就会非常好。反之,如果锁被占用的时间很长,那么自旋的线程只会白浪费处理器资源。适应性自旋锁:自适应意味着自旋的时间(次数)不再固定,而是由前一次在同一个锁上的自旋时间及锁的拥有者的状态来决定。{lamp/}可重入锁 VS 非可重入锁 可重入锁,又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。{lamp/}独享锁 VS 共享锁 ReentrantLock和ReentrantReadWriteLock{lamp/}volatile 当写一个volatile变量时,JMM会把该线程对应的本地内存中的变量强制刷新到主内存中去,导致其他线程中的缓存无效。volatile是一种轻量级的同步机制,一是保证共享变量对所有线程的可见性;二是禁止指令重排序优化。volatile对于单个的共享变量的读/写具有原子性,但是像num++这种复合操作,volatile无法保证其原子性。可以用num.incrementAndGet()。
2014年01月04日
795 阅读
52 点赞
1
...
4
5
6