最近有朋友提出了问题:“是不是拥有了服务发现就是微服务了?”,对于这个问题,很难回答,毕竟微服务的定义在每个人心里都是不一样的,就像“互联网思维”一样,我们说得清“互联网”,却总也说不清楚什么是“互联网思维”(在这个思想开放的互联网时代,你我都是哈姆雷特,但是也是交流沟通便利性的时代)。今天总结这篇文章呢,来说说我对微服务的理解,以及再来探讨下微服务的定义。
其实回头看看我之前写的《微服务指南走北》系列的第一篇《微服务指南走北(一):微服务是什么》中描述的:微服务是基于Restful风格的,基于资源及资源操作一组API的集合,可以实现模块儿或者说是特定的业务范围内的一个完全独立、细粒度、自包含的一个服务。每个微服务提供一组API,供其他微服务或者应用客户端所用。
其中,包含如下几个要点:
1. 基于资源
2. 模块儿化或者业务独立
从下图可以看出,面向主题中的主题,可以看做我们常常设计维度的时候部分维度的抽象,如下图中,顾客活动和和顾客其实都是维度,但是是不同的特殊维度。
数据仓库中粒度化的数据是重用性的关键,因为它可以由众多的用户以不同方式使用。
就拿我们常用的日期维度来说,我们常常把日期维度分为“年、季度、月、周、日、小时”等,那么这里的“年、季度、月、周、日、小时”就是不同的六个粒度(相对时间上的),假设数据仓库中在时间上的粒度是日,那么就需要建立以日为最小分组统计的聚合表,在这个聚合表中,最小可以看到以日为单位的统计数据。
如果要查看周、月、季度、年的相关统计数据,就可以基于日的数据来进行进一步统计及计算。那么问题来了,如果我要看小时的数据怎么办,没有办法的,除非设计的最小粒度为小时。这就是数据的重用性。
当然,同一数据仓库中,对于同一纬度的不同level,也可以有相应粒度对应的数据,但是这样会造成数据的冗余;当然,也可以根据具体使用情景,决定是否需要这样的冗余(原书中说的是双重粒度,这里我更喜欢称为是多重粒度)。
这个答案是不一定的
1. 有些操作型报表需要的数据,在数据仓库中并不存在。
2. 即使操作型报表需要的数据,都会在数据仓库中存在,但是也许当时操作型数据库用到数据的同时,数据并未被归集到DS中(一般DS中的数据并不是实时的,而是定期通过ETL处理的),那么就会出现时数据错乱。
元数据在数据仓库的上层,并且记录
近段时间离职,跟同事们讲解我之前所做的微服务相关产品,对于同事们提出的问题,做了如下整理出来,加上自己的理解,分享出来跟大家一起探讨下:
可以解决复杂性的问题,在功能不变的情况下,分解为多个相互协作的微服务,通过rest API定义边界,这样极大易于开发、理解和维护。
微服务架构是的每
首先alpine内嵌的是BusyBox,使用alpine的crontab实际就是使用BusyBox的crond服务,那么下来就简单介绍下如何使用吧,网上教程还是比较多的:
配置文件是在如下目录中的
/var/spool/cron/crontabs/root
vi /var/spool/cron/crontabs/root
# 或者
crontab -e
# 填入如下内容,最后一行为我添加的测试任务
# do daily/weekly/monthly maintenance
# min hour day month weekday command
*/15 * * * * run-parts /etc/periodic/15min
0 * * * * run-parts /etc/periodic/hourly
0 2 * * * run-parts /etc/periodic/daily
0 3 * * 6 run-parts /etc/periodic/weekly
0 5 1 * * run-parts /etc/periodic/monthly
* * * * * echo "test" >> /app/test.log
crond
ps
PID USER TIME COMMAND
·····
82 root 0:00 crond
292 root 0:00 ps
cat test.log
test
test
test
test
test
OK,至此对于c
<!-- jetty dependecies begin -->
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.1.4.v20140401</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>9.1.4.v20140401</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-continuation</artifactId>
<version>9.1.4.v20140401</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>9.1.4.v20140401</version>
</dependency>
<!-- jetty dependecies end -->
运行war包的类
public class WebAppWarServer {
public static void main(String[] args) throws Exception {
Server server = new Server(8080);