Skip to content

Instantly share code, notes, and snippets.

@vishaltelangre
Last active August 27, 2017 11:05
Show Gist options
  • Save vishaltelangre/f2019023a75e1fbac34e53a433e05d15 to your computer and use it in GitHub Desktop.
Save vishaltelangre/f2019023a75e1fbac34e53a433e05d15 to your computer and use it in GitHub Desktop.

Revisions

  1. Vishal Telangre revised this gist Aug 27, 2017. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions Managing_Data_in_Microservices.md
    Original file line number Diff line number Diff line change
    @@ -9,5 +9,7 @@ Link to the talk: https://www.infoq.com/presentations/microservices-data-centric
    5. Dealing with events
    5.1 At most once delivery - When you don't care about such events, like logging stuff using UDP
    5.2 At least once delivery - When you care about it, so it will retry if it doesn't get acknowledgment of delivery

    5.2.1 Receiving multiple times - Need consumer logic to be idempotent (which means it should yield same result if the same operation/function is performed multiple times, i.e. f(x) == f(f(x)) == f(f(f(f(x)))))

    5.2.2 Receiving out of order - Need CRDT data types (https://github.com/ericmoritz/crdt) or something, which for e.g. keeps the next one in memory for a while until the prior event is received
  2. Vishal Telangre revised this gist Aug 27, 2017. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions Managing_Data_in_Microservices.md
    Original file line number Diff line number Diff line change
    @@ -9,5 +9,5 @@ Link to the talk: https://www.infoq.com/presentations/microservices-data-centric
    5. Dealing with events
    5.1 At most once delivery - When you don't care about such events, like logging stuff using UDP
    5.2 At least once delivery - When you care about it, so it will retry if it doesn't get acknowledgment of delivery
    5.2.1 Receiving multiple times - Need consumer logic to be idempotent (which means it should yield same result if the same operation/function is performed multiple times, i.e. f(x) == f(f(x)) == f(f(f(f(x)))))
    5.2.2 Receiving out of order - Need CRDT data types (https://github.com/ericmoritz/crdt) or something, which for e.g. keeps the next one in memory for a while until the prior event is received
    5.2.1 Receiving multiple times - Need consumer logic to be idempotent (which means it should yield same result if the same operation/function is performed multiple times, i.e. f(x) == f(f(x)) == f(f(f(f(x)))))
    5.2.2 Receiving out of order - Need CRDT data types (https://github.com/ericmoritz/crdt) or something, which for e.g. keeps the next one in memory for a while until the prior event is received
  3. Vishal Telangre revised this gist Aug 27, 2017. 1 changed file with 5 additions and 9 deletions.
    14 changes: 5 additions & 9 deletions Managing_Data_in_Microservices.md
    Original file line number Diff line number Diff line change
    @@ -6,12 +6,8 @@ Link to the talk: https://www.infoq.com/presentations/microservices-data-centric
    2. Local/own/isolated database for each service
    3. Cache join query information locally on respective service's DBs on each write to avoid cascaded service calls (aka joins in monolithic/shared DB)
    4. Alternative to ACID transactions is to perform multi-step operations using a state machine which can be rollbacked
    5. Dealing with events

    5.1 At most once delivery - When you don't care about such events, like logging stuff using UDP

    5.2 At least once delivery - When you care about it, so it will retry if it doesn't get ack of delivery

    5.2.1 Receiving multiple times - Need consumer logic to be idemptotent (which means it should yield same result if the same operation/function is performed multiple times, i.e. f(x) == f(f(x)) == f(f(f(f(x)))))

    5.2.2 Receiving out of order - Need CRDT data types (https://github.com/ericmoritz/crdt) or something, which for e.g. keeps the next one in memory for a while until the prior event is received
    5. Dealing with events
    5.1 At most once delivery - When you don't care about such events, like logging stuff using UDP
    5.2 At least once delivery - When you care about it, so it will retry if it doesn't get acknowledgment of delivery
    5.2.1 Receiving multiple times - Need consumer logic to be idempotent (which means it should yield same result if the same operation/function is performed multiple times, i.e. f(x) == f(f(x)) == f(f(f(f(x)))))
    5.2.2 Receiving out of order - Need CRDT data types (https://github.com/ericmoritz/crdt) or something, which for e.g. keeps the next one in memory for a while until the prior event is received
  4. Vishal Telangre revised this gist Aug 27, 2017. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions Managing_Data_in_Microservices.md
    Original file line number Diff line number Diff line change
    @@ -7,7 +7,11 @@ Link to the talk: https://www.infoq.com/presentations/microservices-data-centric
    3. Cache join query information locally on respective service's DBs on each write to avoid cascaded service calls (aka joins in monolithic/shared DB)
    4. Alternative to ACID transactions is to perform multi-step operations using a state machine which can be rollbacked
    5. Dealing with events

    5.1 At most once delivery - When you don't care about such events, like logging stuff using UDP

    5.2 At least once delivery - When you care about it, so it will retry if it doesn't get ack of delivery

    5.2.1 Receiving multiple times - Need consumer logic to be idemptotent (which means it should yield same result if the same operation/function is performed multiple times, i.e. f(x) == f(f(x)) == f(f(f(f(x)))))

    5.2.2 Receiving out of order - Need CRDT data types (https://github.com/ericmoritz/crdt) or something, which for e.g. keeps the next one in memory for a while until the prior event is received
  5. Vishal Telangre revised this gist Aug 27, 2017. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion Managing_Data_in_Microservices.md
    Original file line number Diff line number Diff line change
    @@ -9,4 +9,5 @@ Link to the talk: https://www.infoq.com/presentations/microservices-data-centric
    5. Dealing with events
    5.1 At most once delivery - When you don't care about such events, like logging stuff using UDP
    5.2 At least once delivery - When you care about it, so it will retry if it doesn't get ack of delivery
    5.2.1 Receiving multiple times - Need consumer logic to be idemptotent (which means it should yield same result if the same operation/function is performed multiple times, i.e. f(x) == f(f(x)) == f(f(f(f(x)))))
    5.2.1 Receiving multiple times - Need consumer logic to be idemptotent (which means it should yield same result if the same operation/function is performed multiple times, i.e. f(x) == f(f(x)) == f(f(f(f(x)))))
    5.2.2 Receiving out of order - Need CRDT data types (https://github.com/ericmoritz/crdt) or something, which for e.g. keeps the next one in memory for a while until the prior event is received
  6. Vishal Telangre revised this gist Aug 27, 2017. 1 changed file with 5 additions and 1 deletion.
    6 changes: 5 additions & 1 deletion Managing_Data_in_Microservices.md
    Original file line number Diff line number Diff line change
    @@ -5,4 +5,8 @@ Link to the talk: https://www.infoq.com/presentations/microservices-data-centric
    1. Service for each table
    2. Local/own/isolated database for each service
    3. Cache join query information locally on respective service's DBs on each write to avoid cascaded service calls (aka joins in monolithic/shared DB)
    4. Alternative to ACID transactions is to perform multi-step operations using a state machine which can be rollbacked
    4. Alternative to ACID transactions is to perform multi-step operations using a state machine which can be rollbacked
    5. Dealing with events
    5.1 At most once delivery - When you don't care about such events, like logging stuff using UDP
    5.2 At least once delivery - When you care about it, so it will retry if it doesn't get ack of delivery
    5.2.1 Receiving multiple times - Need consumer logic to be idemptotent (which means it should yield same result if the same operation/function is performed multiple times, i.e. f(x) == f(f(x)) == f(f(f(f(x)))))
  7. Vishal Telangre created this gist Aug 27, 2017.
    8 changes: 8 additions & 0 deletions Managing_Data_in_Microservices.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    Link to the talk: https://www.infoq.com/presentations/microservices-data-centric

    ## Notes:

    1. Service for each table
    2. Local/own/isolated database for each service
    3. Cache join query information locally on respective service's DBs on each write to avoid cascaded service calls (aka joins in monolithic/shared DB)
    4. Alternative to ACID transactions is to perform multi-step operations using a state machine which can be rollbacked