zookeeper简介
1.分布式系统定义及⾯临的问题
zk最为主要的使用场景,是作为分布式系统的分布式协同服务
假设有一个5人项目组,将面临以下问题,但由于人脑智能,可以很好应对这些问题,在计算机的世界,这样做是行不通的。因此,分布式系统必须采用合理的方式解决掉以上的问题
zk最为主要的使用场景,是作为分布式系统的分布式协同服务
假设有一个5人项目组,将面临以下问题,但由于人脑智能,可以很好应对这些问题,在计算机的世界,这样做是行不通的。因此,分布式系统必须采用合理的方式解决掉以上的问题
@Component
public class TestBeanAspect {
public void testAop() {
System.out.println("---------------------- test aop ---------------------");
}
}
@Component
@Aspect
public class TestAspect {
@Pointcut("execution(* com.example.demo.entity.TestBeanAspect.testAop(..))")
public void pointcut() {
}
@Before("pointcut()")
public void before() {
System.out.println("---------------------- aop before method --------------------");
}
}
@Configuration
@ComponentScan({"com.example.demo"})
@EnableAspectJAutoProxy //开启spring对注解aop的支持
public class SpringConfig {
// @Bean
// public TestBean getTestBean() {
// return new TestBean();
// }
@Bean
public TestAspect testAspect() {
return new TestAspect();
}
@Bean
public TestBeanAspect testBeanAspect() {
return new TestBeanAspect();
}
}
@Test
public void test3() {
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
TestBeanAspect testBean = context.getBean(TestBeanAspect.class);
testBean.testAop();
}
软件实体应当对扩展开放,对修改关闭,这就是开闭原则的经典定义。
软件实体包括:1.项目中划分出的模块; 2.类与接口;3.方法
开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。
名词 | 解释 |
---|---|
Joinpoint 连接点 | 它指的是那些可以⽤于把增强代码加⼊到业务主线中的点,那么由上图中我们可以看出,这些点指的就是⽅法。在⽅法执⾏的前后通过动态代理技术加⼊增强的代码。在Spring框架AOP思想的技术实现中,也只⽀持⽅法类型的连接点。 |
Pointcut 切入点 | 它指的是那些已经把增强代码加⼊到业务主线进来之后的连接点。由上图中,我们看出表现层 transfer⽅法就只是连接点,因为判断访问权限的功能并没有对其增强。 |
Advice 通知/增加 | 它指的是切⾯类中⽤于提供增强功能的⽅法。并且不同的⽅法增强的时机是不⼀样的。⽐如,开启事务肯定要在业务⽅法执⾏之前执⾏;提交事务要在业务⽅法正常执⾏之后执⾏,⽽回滚事务要在业务⽅法执⾏产⽣异常之后执⾏等等。那么这些就是通知的类型。其分类有:前置通知 后置通知 异常通知 最终通知 环绕通知。 |
Target 目标对象 | 它指的是代理的⽬标对象。即被代理对象。 |
Proxy 代理 | 它指的是⼀个类被AOP织⼊增强后,产⽣的代理类。即代理对象。 |
Weaving 织入 | 它指的是把增强应⽤到⽬标对象来创建新的代理对象的过程。spring采⽤动态代理织⼊,⽽AspectJ采⽤编译期织⼊和类装载期织⼊。 |
Aspect 切面 | 它指定是增强的代码所关注的⽅⾯,把这些相关的增强代码定义到⼀个类中,这个类就是切⾯类。例如,事务切⾯,它⾥⾯定义的⽅法就是和事务相关的,像开启事务,提交事务,回滚事务等等,不会定义其他与事务⽆关的⽅法。我们前⾯的案例中 TrasnactionManager就是⼀个切⾯。 |
连接点:⽅法开始时、结束时、正常运⾏完毕时、⽅法异常时等这些特殊的时机点,我们称之为连接点,项⽬中每个⽅法都有连接点,连接点是⼀种候选点
分布式协调技术主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。