- 浏览: 420947 次
- 性别:
- 来自: 杭州
最新评论
-
u012916287:
请问大神。这个架构是你们公司的产品吗?最近准备搞一个基于spr ...
基于DDD的微服务架构设计 -
铁柱他哥:
能给我一份源码码,我这儿边出了点儿问题我参考一下
Jersey采用JSP模板 -
hch2012:
大神,膜拜! ...
基于DDD的微服务架构设计 -
cywhoyi:
lionld23 写道等着看呢,速度速度我是抽空再写的,整篇文 ...
从demo到支持高并发 -
lionld23:
等着看呢,速度速度
从demo到支持高并发
文章列表
#![feature(proc_macro_hygiene)]
#![feature(decl_macro)]
#[macro_use]
extern crate rocket;
use rocket_contrib::json::Json;
#[macro_use]
extern crate diesel;
extern crate dotenv;
mod controller;
mod domain;
mod dto;
mod repository;
mod schema;
mod service;
use controller::*;
use ...
#![feature(decl_macro, proc_macro_hygiene)]
use rocket::response::content;
use rocket::State;
use juniper::tests::model::Database;
use juniper::tests::schema::Query;
use juniper::{EmptyMutation, RootNode};
type Schema = RootNode<'static, Query, EmptyMutation<Database>>;
#[ ...
pragma solidity >=0.4.21 <0.6.0;
contract Casino {
address payable public owner;
event Play(address payable indexed player, uint256 betSize, uint8 betNumber, uint8 winningNumber);
event Payout(address payable winner, uint256 payout);
constructor() public {
own ...
pragma solidity >=0.4.17 <0.6.0;
import "./SafeMath.sol";
import "./Strings.sol";
contract Game {
using Strings for *;
using SafeMath for *;
address public manager;
// address[] public players;
struct GameInstructor {
string nu ...
package main
import (
"encoding/json"
"fmt"
"bytes"
"time"
"strconv"
"github.com/hyperledger/fabric/core/chaincode/shim"
"github.com/hyperledger/fabric/protos/peer"
)
type MarblesChaincode struct{
}
ty ...
优势
服务暂时就两个,交易、签名服务
支持已有trade服务,即不改变已有api服务,无缝连接
协议走proto3,字节小+安全
支持同步和异步服务
支持机器人push
支持多终端,web UI采用react,backend用golang1.12
网络隔离
支持m of N的多签的钱包交易
劣势
编程难度提升
存在安全隐患
客户公司早期使用的Java语言作为服务端
syntax = "proto3";
option java_multiple_files = true;
option java_pac ...
背景:
谈到微服务化,肯定会想到容器,谈到java的微服务化,势必也想到spring cloud,但是谈到数据微服务化,可能或多或少大家不太理解。Data Microservices被提出来,是要解决现在数据时代下,需要解决如下几个痛点问题,不分先后次序:
数据来源错综复杂,mq、rest、jdbc、log等
数据的信息结构复杂多样化
数据量很大,想象下爬虫、电商平台、新零售等
容器、云平台越来越稳健
机器学习、深度学习
并不是说之前的没有
背景:现在微服务大行其道,虽然微服务开山鼻祖是不建议在微服务下做分布式事务,领域驱动设计早已阐明,具有强一致性要求的一组业务概念,属于同一个聚合,不建议拆到不同服务中,从而尽可能避免分布式强事务一致性的处理。但是不可避免我们没有真的按照DDD领域驱动设计,那么微服务如何保持事务一致性呢?
我们这里采用的EventStore的方式,有基于memory、jpa、jdbc等方式,我今天采用了MapDB framework的方式,MapDB提供多种多样方式的数据结构有link、set、map、queue等。
EventMessage
public interface Message<T& ...
就很好奇反编译出来自己写的代码,这里主要使用了五个工具,idea intellij、010edit、jgui、bytecode viewer、eclipse。
HelloWorld
package com.google;
import java.util.ArrayList;
import java.util.List;
public class HelloWorld {
public String hi(String val) {
String p = val;
System.out.println(&quo ...
搭建一套微服务架构的,我个人觉得必须如下模块:
config-service
api-gateway
circuit-breaker
registry
monitor
***-service
第一步构建config-service,登录http://start.spring.io/,选择gradle、maven,基础信息,更重要是选择所需要依赖的
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-clou ...
作者:美团点评技术团队链接:https://zhuanlan.zhihu.com/p/23711137来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。在我们的工程实践中,偶尔会遇到一些服务由于网络连接超时,系统有异常或loa ...
问题背景:
在DDD的架构设计中最难以解决的就是一致性问题,所以我采纳是BASE的最终一致性的方式,至于最终一致性的概念,不在本博客中阐述,设计理念,不外乎就是弥补的方式。
可用性,无论是传统架构还是CQRS架构,都可以做到高可用,只要我们做到让我们的系统中每个节点都无单点即可。但是,相比之下,我觉得CQRS架构在可用性方面,我们可以有更多的回避余地和选择空间。传统架构,因为读写没有分离,所以可用性要把读写合在一起综合考虑,难度会比较更大。因为传统架构,如果一个系统的高峰期的并发写入很大,比如为2W,并发读取也很大,比如为10W。那该系统必须优化到能同时支持 ...
项目背景:
之前在某次培训的分享中,谈到rxjava、vertx等开源框架,也了解到callback概念,在分享的中某位童鞋谈到分布式下callback如何处理,说实话在当时的环境能够通过几句话描述callback都比较困难,更何况描述分布式下的callback,所以本文我想通过基于jgroup的方式,更好阐述我的理解如何处理分布式下的callback。
public class ReplyingCallback implements CommandCallback<Object, Object> {
private ...
DDD领域驱动设计(DDD:Domain-Driven Design)
架构背景:
现有的架构设计实在受不了,业务的反反复复地变化,导致代码圈复杂度之深让人恐惧。之前的微服务架构经验让我更加彻底点,采用DDD领域驱动设计进行整个改变。
随着经过几个月的努力,确实慢慢地体会到ddd的架构设计的优势,聚合根设计能够协助我们整个服务改造,开发起来越来越迅速。
CQRS访问方式:
在CQRS的架构体系,首先会被独立出来两个组件,一个事command的微服务负责add、update等改变状态的动作,query的微服务顾名思义就是读动作。
前言:
Java语言作用很大,因有众多分门杂类的开源框架导致Javaer关注高并发细节问题偏少,常常被面试或者面试的时候,别人总是问你current的包,但是却很少人会询问你,“这段代码在高并发的情况下,会出现问题?我们应该如何改写呢?”所以本篇博客我想从最简单的demo,到支持高并发场景的,如果觉得过程中有问题问大家赐教。
案例:
经典多线程并发问题就是生产者消费者问题,以下列子中,我会加入多种条件,而非一个纯种的生产者-消费者模式,可能很多人会觉得现在有了concurrent的PKG下的一大堆ArrayBlockQueue,但今天主题是如何优化改进。
demo ...