- 浏览: 57480 次
- 性别:
博客专栏
-
从零编写RPC框架
浏览量:0
最新评论
-
39er:
请问如果采用同步方式,并行转换多个文档,会有问题吗
关于office转换pdf完美终极解决方案 -
Knightzxf:
Java操作word转PDF的功能除了你介绍的这几种外,还有其 ...
关于office转换pdf完美终极解决方案 -
javatozhang:
非常不错!!!
浅谈分布式项目日志监控
文章列表
dubbo作为一个服务化框架,rpc模块是dubbo整个框架的核心部分。
我们来通过dubbo来了解rpc调用的本质。
dubbo的rpc模块以Invocation和Result为中心,扩展接口为Protocol、Invoker和Exporter。Protocol是服务域,它是Invoker暴露和引用的主功能入口,它负责Invoker的生命周期管理。Invoker是实体域,它是Dubbo的核心模型,其它模型都向它靠扰,或转换成它,它代表一个可执行体,可向它发起invoke调用,它有可能是一个本地的实现,也可能是一个远程的实现,也可能一个集群实现。
invoker接口 ...
dubbo的扩展采用spi机制实现,spi(Service Provider Interface)是指一些提供给你继承、扩展,完成自定义功能的类、接口或者方法。spi把控制权利交个调用方,调用方来决定使用该spi的哪个实现。
dubbo扩展机制的核心类是ExtensionLoader,该类通过静态方法getExtensionLoader获取一个指定接口的ExtensionLoader实例。
@SuppressWarnings("unchecked")
public static <T> ExtensionLoader<T ...
dubbo-registry注册中心模块,基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。
registry模块顶层接口为RegistryService和NotifyListener以及一个工厂接口RegistryFactory。
RegistryService接口包含4个方法。
void regist ...
dubbo-container模块是dubbo启动顺序中的第一个模块,dubbo-container模块是容器模块,通过dubbo-container模块读取dobbo-config模块的相关配置。
/**
* Container. (SPI, Singleton, ThreadSafe)
*
* @author william.liangf
*/
@SPI("spring")
public interface Container {
/**
* start.
*/
void sta ...
dubbo-config-spring模块是dubbo-config的Extension。
Dubbo的扩展点加载从JDK标准的SPI(Service Provider Interface)扩展点发现机制加强而来。
Dubbo改进了JDK标准的SPI的以下问题:
JDK标准的SPI会一次性实例化扩展点所有实现,如 ...
dubbo模块说明:
dubbo-common 公共逻辑模块,包括Util类和通用模型。
dubbo-remoting 远程通讯模块,相当于Dubbo协议的实现,如果RPC用RMI协议则不需要使用此包。
dubbo-rpc 远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。
dubbo-cluster 集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡, 容错,路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。
dubbo-registry 注册中心模块,基于注册中心下发地址的集群方式,以及对各种注册中心的 ...
目前公司项目采用dubbo服务化升级之后,原先大而全的几个主要应用,拆散重构成多个分布式服务。这个公司业务架构和系统架构实现一次升级,并发和业务开发效率得到提升。但是事情是两面的,引入dubbo服务化之后,导致业务链路过长,日志分散。不能在使用原来的日志处理方式了。
分布式情况下,每个日志分散到各自服务所在机器,日志的收集和分析使用原来古老的模式,肯定是过时了,集群和服务规模小还好,数量一大,我想不管是运维人员还是开发人员都会头疼。
目前处理这个需求最为火热的中间套件,自然首选是ELK,ELK是java技术栈的。也符合目前公司需求。ELK的安装就不讲述了,感兴趣的可以查看官网或 ...
接口
/**
* Project Name:chenxun-framework-start
* File Name:ThreadPool.java
* Package Name:com.chenxun.framework.test
* Date:2016年9月2日下午1:51:44
* Copyright (c) 2016, www midaigroup com Technology Co., Ltd. All Rights Reserved.
*
*/
package com.chenxun.framework.test;
/**
* ClassNam ...
今天群里小伙伴有个需求,希望通过role来控制pojo字段校验。采用方式为spirng securtity+
spring validate 实现
spring4.0+ 默认支持jsr303。spring validate 也支持自定义valdiate注解。因此采用自定义validate注解实现
代码地址:https://github.com/ChenXun1989/role-validate
自定义validate注解
/**
* Project Name:chenxun-cros
* File Name:RoleConstraint.java
* Packa ...
solr中文分词。
solr5.0 自带一个中文分词包,lucene-analyzers-smartcn-5.0.0.jar。 在安装目录下搜寻找到,并copy到solr提供的web服务目录的lib目录下。
修改collection配置里面的schema.xml。新增字段类型。
<fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index& ...
群里小伙伴需要一个solrcloud的解决案例。正好好久没碰过solr了。决定写个demo,顺便重新熟悉下solr。
solr版本:5.0
solr链接:http://archive.apache.org/dist/lucene/solr/5.0.0/
jdk版本:1.70+
windows环境安装:
cd D:\app\solr-5.0.0\bin
solr.cmd -c -z localhost:2181 -p 8983
cd D:\app\solr-5.0.0-01\bin
solr.cmd -c -z localhost:2181 -p ...
最近前端框架修改,小伙伴希望能像以前写jsp一样使用 对象.属性作为表单元素的name值
<form id="test-form">
<input name="a.b.c" value="abc">
<input name="a.b.d" value="abd">
<input name="x" value="x">
<input name="a. ...
今天开始从零学习spring boot,顺便写个博客,记录过程。
工欲利其事,必先善其器。spring boot相关地址如下
http://projects.spring.io/spring-boot/ spring boot官网
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples githup的demo地址
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle ...
为了提高前端小伙伴的开发效率,造了个基于json对象根据表单元素的name属性自动赋值的轮子
json2form:function(obj){
var nodeParent = null;
var value = undefined;
var $el = null;
var nodeName = "";
for(var i in obj){
value= obj[i] ;
if(value === undefined || value===null){
...
最近一个接口项目需要支持跨域访问,基于cross实现。于是去spring官网上找了下,发现spring版本4.2+开始支持通过@CrossOrigin注解实现跨域支持。于是把spring版本升级到4.2.6,下面记录踩过的坑。
controller只需要在原先方法上面添加@CrossOrigin注解即可
@Controller
@RequestMapping("demo")
public class DemoController {
@CrossOrigin
@RequestMapping("test")
pub ...