咨询热线
来源:贵港达内it教育机构 时间:2018/5/19 11:00:43
微服务架构开发是目前大多数软件开发程序员在开发软件的时候都会用到的一种开发方法,今天郑州达内就给大家简单介绍一下,微服务架构常用功能都有哪些。
一、搜索引擎
【集成模式】
对于搜索引擎Elasticsearch来说,个人感觉在常规业务场景中是容易出问题的组件,使用ES索引的数据模型,通常结构复杂并且数据体量偏大,还涉及到大量的检索条件;
服务内管理索引和数据:通常是核心的业务场景,对数据的实时性要求极高,从常规的架构设计来考虑,虽然索引相关的结构和数据可能来自多个数据库,但是其管理的接口会统一封装在业务联系密切的服务内;
独立组件管理索引数据:基于独立的组件(常用Logstash)进行调度,动态地采集、转换和传输数据,不受格式或复杂度的影响,数据往往以各种各样的形式,或分散或集中地存在于很多系统中;
无论是模式一还是模式二,都是ES常用的集成策略,比如模式一对于核心数据模型的构建,常见于订单或商品等,模式二的用法之一ELK日志采集等;
【应用方式】
以服务内部管理索引的方式来说,多数情况下索引的结构会不断的扩展,结构更新必然也会引起数据和检索条件的同步更新,如果是结构新增的方式更新,管理难度并不大,但是已有字段的类型更新,还需要索引重建;
对于ES这种操作起来比较复杂的技术组件,建议是把各种常用的操作编写程序脚本来处理,并且开发相应的管理功能,用更加稳定可控的方式来管理索引的结构和数据调度;
二、定时任务
【集成模式】
Quartz任务调度组件,在分布式系统中并不算复杂,基于定时器去触发各种任务执行即可;
服务内构建定时器:在一些简单的相对独立的服务中,可以在服务内配置定时器,去执行相应的任务流程,这种模式在复杂的分布式系统中很难维护;
独立的任务调度服务:可以统一管理任务的调度策略和执行方式(比如同步或异步),同时对任务调度服务进行监控和维护,以此确保任务调度系统的稳定性和可靠性;
通常模式一只会在个别独立的服务中采用,对于模式二来说,封装独立的任务调度服务,可以统一与其他服务进行集成或者通信,比如通过消息服务及时通知失败的任务等;
【应用方式】
在任务调度服务中,难免要和其他服务进行通信交互,从而触发相关任务的执行,如果系统内部定时任务不多的话,可以采用feign接口的方式触发,如果任务非常多,可以考虑直接构建Http请求的方式,避免服务频繁的升级迭代;
在调度任务中可能存在数据体量比较大的场景,通常就是采用分片算法加线程池并发处理的策略,但是前提也要优化好数据查询和任务处理流程,从整体上提升任务的执行效率;
三、数据存储
【集成模式】
以MySQL为代表的数据存储是系统中核心的一层,其集成的形式也是灵活多变,与存储层相关的组件更是五花八门;
多服务共用数据库:对于模式一来说,在相对简单的系统中比较常用,或者服务和数据库本身偏向通用的功能性质,可以采用这种策略;
服务和库的拆分:模式二是分布式架构中常用的设计,每个服务都具有自己相应的独立数据库,其他服务想要访问必须通过调用相应服务提供的接口才可以;
多数据源模式:在一个服务内集成多个数据源,像模式三读写分离和模式四分库分表,这是偏数据服务的业务场景中经常使用的模式;
对于系统中的数据源管理本身就是一件复杂的事情,需要兼顾各个方面,比如数据读写性能,数据安全,以及服务的稳定性等;
【应用方式】
在常规的微服务工程中,通常每个服务都会使用各自独立的数据库,在多数据源的集成模式中,常用的逻辑就是动态路由、读写分离、分库分表等,如果逻辑简单可以自定义封装,如果逻辑复杂可以使用成熟的组件